Я работаю с API-интерфейсом, и он возвращает мне два типа json, object и array.Как назначить один объект списку?
Object (Когда есть только одна запись в базе данных):
{ "complain": { "id": "1" , "description": "hello", "date": "2017-01-24 11:46:22", "Lat": "20.5204446", "Long": "-100.8249097" } }
Array (При наличии более чем одна запись в базе данных):
{ "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" } ] }
код я использую потреблять JSON выглядит следующим образом:
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);
}
Когда дело доходит до массива JSON, если я могу добавить его в ListView:
myList.ItemsSource = jsonArray.listArray;
Но если это объект, который я не могу, и я получаю следующее сообщение об ошибке:
Cannot implicitly convert type Object to IEnumerable.
То есть, потому что 'list' в этот момент является' RootObject', добавить этот объект в список/массива/коллекции, а затем присвоить что collection to your 'ItemSource' – SushiHangover
У вас есть контроль над api? Если вы это сделаете, я бы рекомендовал вам не возвращать 2 разных объекта из одной и той же конечной точки. Он всегда должен возвращать массив, даже если в базе данных есть только одна запись. Это должно помешать вам выполнить эти проверки. –
Ваше сообщение - это наблюдение. Что за вопрос? :-) Как назначить один объект списку? Как изменить Json, чтобы заставить его работать? Как изменить API RESTful, чтобы вернуть что-то другое? Или просто: почему он не работает? – Krumelur