Ich versuche, JSON mithilfe der JSon.Net-Bibliothek zu analysieren. Die Dokumentation wirkt etwas spärlich und ich bin verwirrt, wie ich das erreichen soll, was ich brauche. Hier ist das Format für den JSON, den ich analysieren muss.
{
"displayFieldName" : "OBJECT_NAME",
"fieldAliases" : {
"OBJECT_NAME" : "OBJECT_NAME",
"OBJECT_TYPE" : "OBJECT_TYPE"
},
"positionType" : "point",
"reference" : {
"id" : 1111
},
"objects" : [ {
"attributes" : {
"OBJECT_NAME" : "test name",
"OBJECT_TYPE" : "test type"
},
"position" : {
"x" : 5,
"y" : 7
}
} ]
}
Die einzigen Daten, die ich wirklich brauche, sind die Inhalte im Objektarray. Kann ich das mit so etwas wie dem JSonTextReader analysieren und einfach die gewünschten Dinge herausziehen, wie OBJECT_TYPE und die x- und y-Position? Ich kann anscheinend nicht so JSonTextReader
arbeiten, wie ich es möchte, und ich finde wenig bis gar keine Anwendungsbeispiele dafür.
Es scheint, als wäre es ideal, zuerst zu serialisieren und dann LINQ mit meinem Objekt zu verwenden. In jedem Beispiel, das ich finde, wird zuerst das Serialisieren von JSON erörtert, aber ich bin mir nicht sicher, wie ich ein Objekt für diese Struktur erstellen würde. Insbesondere das Objektarray, das so etwas wie eine Liste von Paaren von Attribut- und Positionsobjekten sein müsste. Ich habe keine Ahnung, wie ich mein Objekt codieren würde, damit JSon.Net weiß, wie man das serialisiert.
Ich dachte, ich könnte meinen eigenen einfachen Parser schreiben, um einfach alles, was ich brauche, in ein von mir erstelltes Attributobjekt zu ziehen, aber ich habe wenig Glück.
Hoffentlich macht das alles Sinn, irgendwelche Ideen?
quelle
XElement
, mit dem ich LINQ für die JSON-Objekte verwenden kann?Edit: Danke Marc, lies das Thema Struktur gegen Klasse nach und du hast Recht, danke!
Ich neige dazu, die folgende Methode zu verwenden, um das zu tun, was Sie beschreiben, mit einer statischen Methode von JSon.Net:
Link: Serialisieren und Deserialisieren von JSON mit Json.NET
Darf ich für die Objektliste vorschlagen, generische Listen zu verwenden, die aus Ihrer eigenen kleinen Klasse mit
attributes
undposition
Klasse erstellt wurden. Sie können diePoint
Struktur inSystem.Drawing
(System.Drawing.Point
oderSystem.Drawing.PointF
für Gleitkommazahlen) für Ihre X und Y verwenden.Nach der Objekterstellung ist es viel einfacher, die Daten zu erhalten, nach denen Sie suchen, als die Textanalyse, die Sie sonst betrachten.
quelle
(Diese Frage tauchte in einem Suchmaschinenergebnis häufig auf, aber ich habe einen anderen Ansatz gewählt. Hinzufügen einer Antwort auf diese alte Frage, falls andere Personen mit ähnlichen Fragen dies lesen)
Sie können dies mit Json.Net lösen und eine Erweiterungsmethode erstellen, um die Elemente zu verarbeiten, die Sie schleifen möchten:
Und dann greifen Sie wie folgt auf die Daten zu: (Szenario: Schreiben auf die Konsole):
quelle
quelle
[
oder]
Zeichen (Begrenzung von Array- oder Listenstrukturen) überhaupt nicht behandeln .Sie verwenden die
JSON
Klasse und rufen dann dieGetData()
Funktion auf.quelle