Benutzerdefinierte Zuordnung mit Json.NET
Ich versuche, die Karte JSON, das aussieht wie
"ids": {
"id": {
"@value":"6763754764235874140"
}
}
Und ich möchte die Karte auf ein paar Klassen, die Aussehen wie
class Property
{
public Ids Ids { get; set; }
}
class Ids
{
public string Id { get; set; }
}
Also grundsätzlich will ich, was der Wert von ids/id/@value
aus dem JSON-Dokument in Ids.Id
in der Klasse Architektur. Durchsuchen Sie die Dokumentation, ich dachte, ich könnte so etwas wie
[JsonProperty(ItemConverterType=typeof(IdConverter))]
public string Id { get; set; }
und stellen Sie ein benutzerdefiniertes JsonConverter
Unterklasse namens IdConverter
. Wenn ich das mache, obwohl mein IdConverter.ReadJson
nie aufgerufen wird. Was mache ich falsch?
- Ihre Eigenschaft ist der name
Id
, aberid
im json-Format. Es könnte eincase
problem - Stellt sich heraus, Json.NET ist smart genug, um zu Deserialisieren
ids
in dieIds
Eigenschaft ist, obwohl es hinsichtlich Fall auf serialisieren, es sei denn, Sie sagen, es nicht zu.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sieht aus wie die Antwort war, dass
ItemConverterType
ist für die Umwandlung der Elemente in einem array. Doppel-Kommentierung, die das Objekt mitJsonProperty
undJsonConverter
Parametern funktioniert:JsonProperty
. Ich geändert es zuJsonConverter
und es funktioniert, ohne die Notwendigkeit für die zusätzlicheJsonProperty
Attribut. Könnte nur ein Fehler in einer älteren version, aber auf up-to-date-Versionen (insbesondere v4), können Sie einfachJsonConverter
JsonProperty
Attribut notwendig war, um zu serialisierenId
(groß-erste Buchstaben) in eine JSON-Feld mit dem Namenid
(Kleinbuchstaben). Hat die neuere version diese richtig verarbeiten ohne extra Attribut?JsonConvert.SerializeObject(new MyClass())
out of the box scheint die Verwendung der serializable-Klasse Eigenschaften-Namen " als-ist.