Json.NET JsonConvert.DeserializeObject() return null Wert
versuchte ich Deserialisieren diese Zeichenfolge :
string _jsonObject = {\"Ad\":{\"Type\":\"Request"\,
\"IdAd\":\"xxx@xxx.com\",
\"Category\":\"cat\",
\"SubCategory\":\"subcat\"},
\"Position\":{\"Latitude\":\"38.255\",
\"Longitude\":\"1.2\",
\"Imei\":\"0123456789\"};
}";
Message _message = JsonConvert.DeserializeObject<Message>(_jsonObject);
Funktioniert Recht für die "Ad" aber nicht instantiieren "Position".
Irgendeine Idee ?
Serialize
oderDeserialize
? Wo ist Ihr Erklärungen? code?- en.wiktionary.org/wiki/instanciate
Du musst angemeldet sein, um einen Kommentar abzugeben.
In dem Interesse, anderen zu helfen, die möglicherweise dieses Problem Auftritt, oder eine in Bezug auf es...
In meinem Fall hatte ich ein Objekt mit einer Reihe von anderen Objekten, und eines der Referenz-Typ-Eigenschaften auf diese sub-Objekte immer den Wert null nach der Deserialisierung. Ich habe versucht, alle Arten von Dingen, einschließlich des Herunterladens der JSON.Net Quell-und die stepping durch die Suche nach der Fehlerstelle.
Um eine lange Geschichte kurz, das problem war natürlich meine eigene. Hier ist eine stark vereinfachte version meines JSON und Klassen.
JSON
Klassen
Was passiert war, ist, dass, weil die
Owner
Eigenschaft erschien in der JSON-vor derOwnerId
Eigenschaft, wenn dieOwnerId
- Eigenschaft festgelegt wurde, der Set-code bestimmt, dass der aktuelle Wert war nicht der gleiche wie der Wert gesetzt wird (da der aktuelle Wert null), so ist es denOwner
- Eigenschaft auf null.Um es zu beheben ich check das auch Wert gesetzt gegen die id des
Owner
Objekt als gut, und überspringen Sie die EinstellungOwner
auf null, wenn Sie identisch sind.Zugegeben, die Ursache für mein problem kann nicht für alle gleich sein, aber dies ist zumindest ein warnendes Beispiel zu überprüfen, was passiert, wenn Ihre Objekte werden initialisiert, die während der Deserialisierung.
Habe ich vergessen zu machen, die Eigenschaften der öffentlichkeit. Vergessen Sie nicht, dies zu tun...
{ get; private set; }
war mein problem!!!!{ get; internal set; }
Ich weiß nicht, wie Sie versuchen, zu Deserialisieren, aber das sollte funktionieren....
\"Request"\,
Stellen Sie sicher, dass der name des Arrays in der JSON-entspricht der Eigenschaft name in der Klasse
Illustrieren (siehe "Komponenten"):
JSON:
Klasse:
Deserialisieren:
In meinem Fall es ist ein subtiler Fehler. Es ist leicht zu führenden oder nachgestellten Leerzeichen in die json-Schlüssel versehen. Wenn das passiert, wird der Schlüssel nicht erkannt und versucht, zu Deserialisieren, wird der Wert auf null.
Beispiel:
{" id": 123}
Diese
id
Feld nicht anerkannt, da der führenden Platz" id"
. Um es zu beheben, reparieren Sie die json zu haben, statt"id"
.Mein problem war, dass ich darunter den Namen der Klasse an den Anfang meiner JSON-string. Ich hatte kopieren-einfügen aus der serialisierten Ausgabe von einer anderen Klasse enthalten, dass die, die ich wollte zu Deserialisieren und ich hatte gezielt enthalten den Namen der Klasse denken, das war die richtige JSON-string. Einmal habe ich entfernt den Namen der Klasse von meinem JSON-string, es deserialisiert gut.
Dieser Artikel war hilfreich bei der Realisierung dieser: https://social.msdn.microsoft.com/Forums/windowsapps/en-US/4d766a28-ff38-477f-8abf-48ed01f74cd2/jsonconvertdeserializeobjectlttgtjsonstring-returning-all-propertieslttgt-as-null?forum=wpdevelop
Ich nicht sehen, diese Antwort hier, also bin ich mit es in der Hoffnung, dass es hilft, diejenigen, die aus den gleichen dummen Fehler wie ich.