Я изучаю Xamarin для создания кроссплатформенных мобильных приложений. Чтобы получить данные с сервера SQL, я создал веб-API и разместил его в своей локальной сети. Я проверил его, и он работает отлично, как и ожидалось.
Редактировать-Добавлен Json Json
[{"Id":1,"FirstName":"D","LastName":"M","Company":"MD"},{"Id":2,"FirstName":"D","LastName":"S","Company":"DM"},{"Id":6,"FirstName":"MD","LastName":"","Company":"MD"},{"Id":8,"FirstName":"DM","LastName":"D","Company":""}]
В xamarin.forms
У меня есть список, где я быдесериализовать JSON и назначить его как ItemsSource.
Проблема заключается в том, каким образом я пытаюсь десериализовать JSON, при конвертации выдается ошибка.
Редактировать IИспользовал атрибут DataContract только при попытке десериализации с помощью DataContractJsonSerializer.
Вот мой класс PO для JSON,
[DataContract]
public class Employee
{
[DataMember]
[JsonProperty("Id")]
public int Id { get; set; }
[DataMember]
[JsonProperty("FirstName")]
public string FirstName { get; set; }
[DataMember]
[JsonProperty("LastName")]
public string LastName { get; set; }
[DataMember]
[JsonProperty("Company")]
public string Company { get; set; }
}
Вот некоторые коды, которые использовались для десериализации JSON,
var response = await httpClient.GetAsync(Url);
if (response.IsSuccessStatusCode)
{
var content = await response.Content.ReadAsStringAsync();
var Employees = JsonConvert.DeserializeObject<Employee>(content);
empListView.ItemsSource = Employees;
}
else
{
await DisplayAlert("Failed", "Connection Failed", "OK");
}
Это привело к ошибке
Чтобы исправить это, я изменил приведенный выше код как
List<Employee> Employees = JsonConvert.DeserializeObject<List<Employee>>(content);
Itпривел к той же ошибке, я попытался использовать массив,
Employee[] Employees = JsonConvert.DeserializeObject<Employee[]>(content);
В другом обсуждении, касающемся той же проблемы в этом переполнении стека, я нашел код и тоже попробовал,
using (var web = new WebClient())
{
var response = web.DownloadString(Url);
Employee[] emp;
using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(response)))
{
var serializer = new DataContractJsonSerializer(typeof(Employee[]));
emp = serializer.ReadObject(stream) as Employee[];
}
empListView.ItemsSource = emp;
}
, но этотоже не помогло. Может кто-нибудь помочь мне решить эту проблему?