Ich arbeite mit einem API Rest und es gibt mir zwei Arten von JSON, Objekt und Array.Wie weise ich ein einzelnes Objekt einer Liste zu?
Object (Wenn nur ein Datensatz in der Datenbank):
{ "complain": { "id": "1" , "description": "hello", "date": "2017-01-24 11:46:22", "Lat": "20.5204446", "Long": "-100.8249097" } }
Array (Wenn es mehr als ein Datensatz in der Datenbank):
{ "complain": [ { "id": "1" , "description": "hello", "date": "2017-01-24 11:46:22", "Lat": "20.587446", "Long": "-100.8246490" }, { "id": "2" , "description": "hello 2", "date": "2017-01-24 11:50:12", "Lat": "20.529876", "Long": "-100.8249097" } ] }
Der Code, den ich verwende verbrauchen die json wie folgt:
content = await response.Content.ReadAsStringAsync();
var token = JToken.Parse(content);
if (token["complain"] is JArray)
{
var jsonArray = JsonConvert.DeserializeObject<RootArray>(content);
}
else if (token["complain"] is JObject)
{
var jsonObject = JsonConvert.DeserializeObject<RootObject>(content);
}
wenn es um einen jSON-Array kommt, wenn ich es zu einem Listview hinzufügen:
myList.ItemsSource = jsonArray.listArray;
Aber wenn es ein Objekt ist, kann ich nicht und ich erhalte den folgenden Fehler:
Cannot implicitly convert type Object to IEnumerable.
das, weil 'list' an diesem Punkt ist ein' RootObject' ist, fügen Sie das Objekt zu einer Liste/Array/Sammlung und weisen Sie dann, dass Sammlung zu Ihrer 'ItemSource' – SushiHangover
Haben Sie eine Kontrolle über die API? Wenn Sie das tun, würde ich empfehlen, dass Sie nicht zwei verschiedene Objekte vom selben Endpunkt zurückgeben. Es sollte immer ein Array zurückgeben, auch wenn nur ein Datensatz in der Datenbank vorhanden ist. Es sollte Sie davon abhalten, diese Überprüfungen durchzuführen. –
Ihr Beitrag ist eine Beobachtung. Was ist die Frage? :-) Wie ordne ich ein einzelnes Objekt einer Liste zu? Wie ändere ich den Json, damit es funktioniert? Wie ändere ich die RESTful-API, um etwas anderes zurückzugeben? Oder einfach: Warum funktioniert es nicht? – Krumelur