2016-10-24 5 views
1

У меня возникают проблемы с разрешением этого сообщения об ошибке. Я посмотрел на некоторые другие ответы здесь и изменил некоторые вещи, но я все еще получаю эту ошибку:Не удается десериализовать текущий объект JSON - Newtonsoft

Newtonsoft.Json.JsonSerializationException: не удается десериализовать текущий объект JSON (например, {"name": "value"}) в type 'System.Collections.Generic.List`1 [Clocker.Models.PeopleLocationForUser]', потому что для правильного десериализации этот тип требует массива JSON (например, [1,2,3]).

Это мой класс:

namespace Clocker.Models 
{ 
    public class PeopleLocationForUser 
    { 
     string locationPeople { get; set; } 
     public users users { get; set; } 

    } 

    public class users 
    { 
     public int EB_Counter { get; set; } 
     public string FirstName { get; set; } 
     public string LastName { get; set; } 
     public int TATokenValue { get; set; } 
    } 
} 

Это метод, что ошибки на десериализации линии:

public static async Task<PeopleLocationForUser> GetPeopleLocationForUser(string UserName, int LocationId) 
{ 
    Uri uri = new Uri(URL + "GetPeopleLocationForUser" + "?username=" + UserName + "&locationid=" + LocationId); 

    HttpClient myClient = new HttpClient(); 
    var response = await myClient.GetAsync(uri); 

    var content = await response.Content.ReadAsStringAsync(); 

    var test = JsonConvert.DeserializeObject<List<PeopleLocationForUser>>(content); 

    //return something when it's working 
    return null; 
} 

Это начало данных Json: результат

{ " ": правда," locationPeople ": [{" EB_Counter ": 101," FirstName ":" RSS», "ЬазШате": "13.11.1", "TATokenValue": "TS_101_1_RSS_SWIPE"}, { "EB_Counter": 102, "FirstName": "RSS", "LastName": "13.11.2", "TATokenValue": "TS_102_1_RSS_SWIP E "}, {" EB_Counter ": 93," FirstName ":" RSS " "LastName": "13.7.1", "TATokenValue": "TS_93_1_RSS_SWIPE"}, { "EB_Counter": 94, "FirstName":" RSS», "LastName": "13.7.10", "TATokenValue": "TS_94_1_RSS_SWIPE"}, { "EB_Counter": 95, "FirstName": "RSS", "LastName": "13.8.2", "TATokenValue" : "TS_95_1_RSS_SWIPE"}, { "EB_Counter": 99, "FirstName": "RSS", "LastName": "13.9.2", "TATokenValue": "TS_99_1_RSS_SWIPE"},

Это то, что мои данные Json выглядит, когда он приходит:

json deserialization error

Я надеюсь, что вы можете помочь. Конечным результатом является то, что я пытаюсь получить эти данные в списке, поэтому я могу использовать его в Xamarin ListView.

+0

, насколько я могу видеть, это requieres массив вместо списка – McNets

+0

Я думаю, что вы найдете решение здесь: http://stackoverflow.com/questions/10534576/json-net-deserializing – McNets

+0

@mcNets Я пробовал это, и он не улучшился. Я думаю, что моя проблема, возможно, имеет отношение к тому, как устроен класс, возможно, возможное столкновение с форматом Json, но я не уверен. – connersz

ответ

2

Вы получаете список и в классе вы ждете только один экземпляр пользователя, это то, как должен быть класс:

public class LocationPeople 
{ 
    public int EB_Counter { get; set; } 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public string TATokenValue { get; set; } 
} 

public class RootObject 
{ 
    public bool result { get; set; } 
    public List<LocationPeople> locationPeople { get; set; } 
} 

var test = JsonConvert.DeserializeObject<RootObject>(content); 
+0

Привет, Я внедрил ваши изменения, но я все равно получаю ту же ошибку. – connersz

+0

обновил ответ. –

+0

У меня получилось, спасибо. – connersz