JavascriptSerializer Deserializer, nicht in der Lage, mein Objekt Deserialisieren
Ich bin nicht in der Lage zu Deserialisieren meine custom-Objekt.
public class UserInfo
{
public int Id1 { get; set; }
public string Code { get; set; }
public int Id2 { get; set; }
public List<string> Roles { get; set; }
public string Eg1 { get; set; }
public DateTime Time{ get; set; }
public string Eg2 { get; set; }
public string Version { get; set; }
}
JavaScriptSerializer serializer = new JavaScriptSerializer();
return serializer.Deserialize<UserInfo>(raw);
Dem Deserialisieren ist eine Ausnahme zu werfen
"Cannot convert object of type 'System.String' to type 'UserInfo'"
JSON-Inhalt:
"\"{\\\"Id1\\\":0,\\\"Code\\\":null,\\\"Id2\\\":0,\\\"Roles\\\":null,\\\"Eg1\\\":\\\"Eg2\\\",\\\"Time\\\":\\\"\\\\/Date(-62135596800000)\\\\/\\\",\\\"Version\\\":\\\"1.0.0.0\\\"}\""
Beachten Sie: Lassen Sie mich wissen, wenn es unklar ist. Ich werde Bearbeiten Sie die Frage.
-- bearbeitet. ID2 geändert Id2. Die Reale Klasse ist anders in Bezug auf die Variablen-Namen. Daher die Frage.
Sicherlich sind es nicht alle die \'s im JSON! Stellen Sie sicher, um die ist [JSON] text in der post, nicht der Inspektor-was-wäre-wenn-das-war-ein-string-literal mit dem Wert .. wenn dieses wurde getan, es offenkundig, text ist der Wert
Danke ... Scheint, ich war auf Schlaftabletten. Als ich es ansah, war ich serialisieren zweimal! daher nicht in der Lage zu re-cast. Es funktioniert jetzt. Aktualisiert die korrekte JSON.
"json junk which is in a string and not a JSON object"
.Danke ... Scheint, ich war auf Schlaftabletten. Als ich es ansah, war ich serialisieren zweimal! daher nicht in der Lage zu re-cast. Es funktioniert jetzt. Aktualisiert die korrekte JSON.
InformationsquelleAutor NSN | 2012-10-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Übergeben Sie einen Javascript-string zu Ihrem deserializer, weil Sie Ihr Objekt innerhalb einer entkam string.
Nach unescaping es, das ist der serializer erhält:
"{\"Id1\":0,\"Code\":null,\"Id2\":0,\"Roles\":null,\"Eg1\":\"Eg2\",\"Time\":\"\\/Date(-62135596800000)\\/\",\"Version\":\"1.0.0.0\"}"
Was Sie wirklich wollen, es zu senden ist:
{"Id1":0,"Code":null,"Id2":0,"Roles":null,"Eg1":"Eg2","Time":"\/Date(-62135596800000)\/","Version":"1.0.0.0"}"
InformationsquelleAutor Adam
Ihr string ist ein C# - string, JavaScript string mit JSON. Kurz zu fixieren, was Sie sind geschickt, hier ist, wie würden Sie Deserialisieren:
Das wird nicht funktionieren. string nicht über einen parameterlosen Konstruktor.
Es funktioniert. Nur verifiziert in LINQPad.
InformationsquelleAutor Jacob
Ihre
ID2
ist alle Kappen in die JSON und dieId2
ist nicht in Ihrer Klasse.EDIT:
Versuchen Sie, erstellen Sie eine Instanz des Objekts und serialisieren zu JSON zu vergleichen und zu sehen, ob das JSON korrekt ist oder nicht. Sie können dann verwenden Sie die Zeichenfolge ordnungsgemäß formatieren.
InformationsquelleAutor Yatrix
Den code unten sollte jemand helfen, aufzustehen und zu laufen.
dem obigen code wird ein Fehler auf, weil die Zeichenfolge hat keinen default-Konstruktor.
Wenn ein string übergeben wird, aus JSON.stringify () - JavaScript-client-Methode die zweite Deserialisieren kann funktionieren, wenn das übergebene Objekt in Karten auf die öffentlichen Felder in das Objekt.
Schauen wir uns ein Beispiel, vorausgesetzt, eine .ASHX-Datei empfängt die Anfrage von einem jQuery-Aufruf, der wie folgt aussieht:
//Und in den Prozess Anfrage
InformationsquelleAutor RickIsWright