2016-05-18 12 views
1

Ich habe einen JSON-String wie folgt aus:Wie jeson mit einem leeren Feld deserialisieren?

[{ 
     "_id": "abcd", 
     "name": "bender rodriguez", 
     "meta": { 
     "location": {} 
     }, 
     dob": , 
} 
] 

Der Abschnitt nach dob sprengt:

return new JavaScriptSerializer().Deserialize<T>(json); 

Das Problem der leeren dob ist. Ich kann keine Methode finden, mit so etwas umzugehen. Scheint nicht einmal ein allgemeines Problem zu sein? Ich bin nicht zu vertraut mit der Deserialisierung JSON, welche Methoden kann ich verwenden, um mit dieser anderen als string.replace(": ,"," : null,") umzugehen?

+0

Das fehlende Zitat Marco Erwähnungen ist offensichtlicher, wenn Ihr Code-Snippet richtig formatiert ist. –

+0

Woher kommt der JSON? Es ist derzeit nicht gültig mit dem leeren Wert. – Steve

+0

Sind Sie sicher, dass Ihnen das führende Zitat auf der 'dob'-Zeile fehlt? Oder ist das ein Tippfehler in der Frage? – dbc

Antwort

1

Der JSON-Deserialiser, den Sie verwenden, ist in Ordnung, der JSON, den Sie versuchen, deserialice ist falsch, es fehlt ein Wert und die ersten doppelten Anführungszeichen für die dob-Eigenschaft.

Verwenden Sie JSONLint, um JSON zu validieren. Wenn dass JSON von einer Komponente kommt, Sie steuern, dann eine JSON serializer verwenden Sie es richtig serialisiert werden, wenn nicht, können Sie dieses besondere Problem mit diesem beheben:

string myJson = "[{ \"_id\": \"abcd\", \"name\": \"bender rodriguez\", \"meta\": { \"location\": {} }, dob\": , } ]"; 

JavaScriptSerializer().Deserialize(myJson.Replace("dob\": ", "\"dob\": \"\"")); 

Aber wenn sich die Daten ändern und es hält eine mit Wenn Sie ein ungültiges JSON-Format verwenden, können Sie wenig dagegen tun, aber fragen, wer diese Komponente erstellt hat, um Ihnen gültige JSON-Daten zu senden.

Verwandte Themen