#c# #json #xaml #xamarin
Вопрос:
Поэтому я пытаюсь использовать json в клиентском приложении (C# Xamarin) с помощью этого кода. В приведенном ниже примере я использую общедоступный API только с одним результатом, но мой код точно такой же за пределами URL-адреса и количества возвращенных roe..
private static async System.Threading.Tasks.Task FillList() { using (var httpClient = new HttpClient()) { var json = await httpClient.GetStringAsync("http://ip.jsontest.com"); Listlt;IpAddressgt; ipAddress = JsonConvert.DeserializeObjectlt;Listlt;IpAddressgt;gt;(json); foreach (IpAddress address in ipAddress) { Console.WriteLine(address.IP.ToString()); } } }
Проходя через отладчик, я добираюсь до этой строки
var json = ожидание HttpClient.GetStringAsync(«http://ip.jsontest.com»);
Но еще на один шаг (F11) отладчик переходит к концу блока и пропускает заполнение списка. Почему он перепрыгивает через заполнение списка и переходит в конец блока кода? И что мне нужно, чтобы заполнить список IP-адресов результатом?
Комментарии:
1. вероятно, это артефакт отладчика и асинхронного кода. Однако вы пытаетесь десериализовать один объект в a
List
, что вызовет исключение.2. Фактический API содержит 30 записей и делает то же самое, я использовал это в качестве примера, потому что поведение ошибки такое же, и оно было общедоступным, чтобы люди могли увидеть пример того, что я пытаюсь. Сказав это, есть ли проблема со списком из 1 пункта?
3.
http://ip.jsontest.com
возвращает ОДИН объект. Это НЕ массив с одним элементом. Есть разница. Поместите попытку/уловку вокругDeserializeObject
, чтобы увидеть, не вызывает ли это исключение.4. Он проскакивает мимо ловушки try. Отладчик попадает в строку ожидания var, а затем переходит прямо в конец блока кода.
5. как я уже говорил ранее, я подозреваю, что это отладчик, который не справляется с асинхронным кодом. Попробуйте запустить без точки останова. Или попробуйте жестко закодировать ответ,
GetStringAsync
чтобы посмотреть, как он себя ведет.