Проблема с использованием json из формы Xamarin

#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 чтобы посмотреть, как он себя ведет.