Otrzymuję JSON z powrotem z API, które wygląda tak:Cofnięcie zagnieżdżone JSON w C# obiekty
{
"Items": {
"Item322A": [{
"prop1": "string",
"prop2": "string",
"prop3": 1,
"prop4": false
},{
"prop1": "string",
"prop2": "string",
"prop3": 0,
"prop4": false
}],
"Item2B": [{
"prop1": "string",
"prop2": "string",
"prop3": 14,
"prop4": true
}]
},
"Errors": ["String"]
}
Próbowałem kilka podejść do reprezentowania tego JSON w C# obiektów (zbyt wiele do listy tutaj). Próbowałem z list i słowników, tutaj jest ostatnim przykładem, jak starałem się ją reprezentować:
private class Response
{
public Item Items { get; set; }
public string[] Errors { get; set; }
}
private class Item
{
public List<SubItem> SubItems { get; set; }
}
private class SubItem
{
public List<Info> Infos { get; set; }
}
private class Info
{
public string Prop1 { get; set; }
public string Prop2 { get; set; }
public int Prop3 { get; set; }
public bool Prop4 { get; set; }
}
A oto metoda używam deserializacji JSON:
using (var sr = new StringReader(responseJSON))
using (var jr = new JsonTextReader(sr))
{
var serial = new JsonSerializer();
serial.Formatting = Formatting.Indented;
var obj = serial.Deserialize<Response>(jr);
}
obj
zawiera Items
i Errors
. I Items
zawiera SubItems
, ale SubItems
jest null
. Tak więc nic poza wyjątkiem Errors
jest faktycznie uzyskiwanie deserialized.
Powinno być proste, ale z jakiegoś powodu nie mogę dowiedzieć się prawidłową reprezentację obiektu
Fajnie, mam zamiar spróbować. Po prostu próbowałem podobnego podejścia, ale słownik znalazł się na liście! – user3574076
To działało. Okazuje się, że moja ostatnia próba była * tak blisko * – user3574076