Ich bin mit JSON.net ein wenig vertraut und kann das JSON mit einfacher Struktur (bis zu einem Kind) deserialisieren. Ich bin gerade dabei, den JSON zu deserialisieren, der von der Netatmo-API zurückgegeben wird. Die Struktur von JSON ist für mich kompliziert. Im Folgenden ist die Grundstruktur des JSON-Deserialisieren von JSON mit Child und Inner Childs
_id
place
location
Dynamic Value 1
Dynamic Value2
altitude
timezone
mark
measures
Dynamic Value 1
res
Dynamic Value 1
Dynamic Value 1
Dynamic Value 2
type
Dynamic Value 1
Dynamic Value 2
modules
Dynamic Value 1
Dynamischer Wert 1 und dynamischen Wert 2 repräsentiert die Werte, die für jede ID geändert wird. Die vollständige JSON ist unten angegeben,
{
"body": [{
"_id": "70:ee:50:02:b4:8c",
"place": {
"location": [-35.174779762001, -5.8918476117544],
"altitude": 52,
"timezone": "America\/Fortaleza"
},
"mark": 0,
"measures": {
"02:00:00:02:ba:2c": {
"res": {
"1464014579": [16.7, 77]
},
"type": ["temperature", "humidity"]
},
"70:ee:50:02:b4:8c": {
"res": {
"1464014622": [1018.1]
},
"type": ["pressure"]
}
},
"modules": ["02:00:00:02:ba:2c"]
}, {
"_id": "70:ee:50:12:40:cc",
"place": {
"location": [-16.074257294385, 11.135715243973],
"altitude": 14,
"timezone": "Africa\/Bissau"
},
"mark": 14,
"measures": {
"02:00:00:06:7b:c8": {
"res": {
"1464015073": [26.6, 78]
},
"type": ["temperature", "humidity"]
},
"70:ee:50:12:40:cc": {
"res": {
"1464015117": [997]
},
"type": ["pressure"]
}
},
"modules": ["02:00:00:06:7b:c8"]
}],
"status": "ok",
"time_exec": 0.010364055633545,
"time_server": 1464015560
}
Ich bin verwirrt, indem ich auf die komplexe Struktur dieses JSON. Für einzelne Ebene von JSON habe ich diesen Code in der Vergangenheit verwendet,
IList<lstJsonAttributes> lstSearchResults = new List<lstJsonAttributes>();
foreach (JToken objResult in objResults) {
lstJsonAttributes objSearchResult = JsonConvert.DeserializeObject<lstJsonAttributes>(objResult.ToString());
lstSearchResults.Add(objSearchResult);
}
Aber für so viel Kind habe ich noch zu verstehen, wie die Objektklasse erstellt werden. Jede Anleitung wird sehr geschätzt.
Update: Das habe ich bisher erreicht.
I wie unten eine Hauptklasse erstellt haben,
public class PublicDataClass
{
public string _id { get; set; }
public PublicData_Place place { get; set; }
public string mark { get; set; }
public List<string> modules { get; set; }
}
und "Platz" Klasse ist wie folgt,
public class PublicData_Place
{
public List<string> location { get; set; }
public string altitude { get; set; }
public string timezone { get; set; }
}
Dann habe ich das Objekt in der folgenden Codezeile deserialisiert,
var obj = JsonConvert.DeserializeObject<List<PublicDataClass>>(jsonString);
Ich kann jetzt alle Daten mit Ausnahme der "Maßnahmen", die ein wenig komplizierter ist, erfolgreich erhalten.
Bündel Vielen Dank für Ihre Antwort tun und wie Sie haben es erklärt. Ich erreichte langsam an diesem Punkt. Ich habe http://json2csharp.com/ verwendet, um JSON in C# -Objekte umzuwandeln. Es hat das Objekt für die Measures nicht erfolgreich erstellt, aber dann auf einen anderen Post auf SO verwiesen und den gesamten JSON in ein dynamisches Objekt konvertiert. Es hat alles erstellt und alle Daten aufgefüllt. Ich habe gerade die Objekte im QuickWatch-Fenster betrachtet und herausgefunden, dass geschachtelte untergeordnete Objekte für Measures als Dictionary erstellt wurden.Benutzerdefinierter Typ ist viel einfacher mit verschachtelten dynamischen Objekten zu arbeiten. –
Ich habe es gerade getestet und es hat ohne Probleme funktioniert. Noch einmal Danke. –