Ich versuche, den Graph API- Aufruf eines Facebook-Freundes in eine Liste von Objekten zu deserialisieren . Das JSON-Objekt sieht folgendermaßen aus:
{"data":[{"id":"518523721","name":"ftyft"},
{"id":"527032438","name":"ftyftyf"},
{"id":"527572047","name":"ftgft"},
{"id":"531141884","name":"ftftft"},
{"id":"532652067","name"...
List<EFacebook> facebooks = new JavaScriptSerializer().Deserialize<List<EFacebook>>(result);
Es funktioniert nicht, weil das primitive Objekt ungültig ist. Wie kann ich das deserialisieren?
Dictionary<string,string>
, check out: stackoverflow.com/questions/7699972/…Antworten:
Sie müssen eine Struktur wie folgt erstellen:
Dann sollten Sie in der Lage sein:
Die Namen meiner Klassen sind nur ein Beispiel. Sie sollten Eigennamen verwenden.
Hinzufügen eines Beispieltests:
Produziert:
quelle
Manchmal bevorzuge ich dynamische Objekte:
quelle
Eine gute Möglichkeit, diese Klassen automatisch für Sie zu generieren, besteht darin, Ihre JSON-Ausgabe zu kopieren und hier einzufügen:
http://json2csharp.com/
Es bietet Ihnen einen Ausgangspunkt, um Ihre Klassen für die Deserialisierung zu verbessern.
quelle
Sehr einfach können wir JSON-Inhalte mit Hilfe von Dictionary und JavaScriptSerializer analysieren. Hier ist der Beispielcode, mit dem ich JSON-Inhalte aus einer Ashx-Datei analysiere.
quelle
Newtonsoft.JSON
ist eine gute Lösung für diese Art von Situationen. AuchNewtonsof.JSON
ist schneller als andere, wie zum BeispielJavaScriptSerializer
,DataContractJsonSerializer
.In diesem Beispiel können Sie Folgendes tun:
Anschließend können Sie jsonData in umwandeln
JArray
und mithilfe einerfor
Schleife Daten bei jeder Iteration abrufen .Außerdem möchte ich etwas hinzufügen:
Die Arbeit mit dynamischen Objekten und die Verwendung von Newtonsoft Serialize ist eine gute Wahl.
quelle
Ich stimme Icarus zu (hätte kommentiert, wenn ich könnte), aber anstatt eine CustomObject- Klasse zu verwenden, würde ich ein Wörterbuch verwenden (falls Facebook etwas hinzufügt).
oder
quelle
public IList<IDictionary<string, dynmaic>> data { get; set; }
Serialisierung:
Deserialisierung: :
Deserialisieren eines dynamischen Objekts
quelle
Sie können diese Erweiterungen verwenden
quelle
Hier ist eine weitere Site, die Ihnen mit dem gesamten Code hilft, den Sie benötigen, solange Sie eine korrekt formatierte JSON-Zeichenfolge zur Verfügung haben:
https://app.quicktype.io/
quelle
Wenn Sie .NET Core 3.0 verwenden, können Sie mit System.Text.Json (das jetzt integriert ist) JSON deserialisieren.
Der erste Schritt besteht darin, Klassen zum Modellieren des JSON zu erstellen. Es gibt viele Tools, die dabei helfen können, und einige der Antworten hier listen sie auf.
Einige Optionen sind http://json2csharp.com , http://app.quicktype.io oder Visual Studio (Menü Bearbeiten → Spezial einfügen → JSON als Klassen einfügen ).
Dann können Sie deserialisieren mit:
Wenn Sie Einstellungen wie die
camelCase
Handhabung hinzufügen müssen , übergeben Sie die Serializer-Einstellungen wie folgt an den Deserializer:quelle