2015-07-02 3 views
0

Полученные данные, как это:Десериализация массив объектов с Json.NET

enter image description here

Внутри каждого элемента есть объект, customer, у меня одинаковый класс для этого. Как я могу конвертировать их с помощью Json.net?

я попытался следующие:

var data = JsonConvert.DeserializeObject<List<customer>>(val); 

и добавляющие еще один класс:

public class customerJson 
{ 
    public Customer customer{ get; set; } 
} 

И пытаются десериализации его:

var data = JsonConvert.DeserializeObject<List<customerJson>>(val); 

С ними обоими я получаю исключение :

Невозможно десериализовать текущий объект JSON (например, {"name": "value"}) в тип 'System.Collections.Generic.List`1 [customer]', потому что для правильной десериализации этот тип требует массива JSON (например, [1,2,3]). Чтобы исправить эту ошибку, либо измените JSON на массив JSON (например, [1,2,3]), либо измените десериализованный тип, чтобы он был обычным типом .NET (например, не примитивным типом типа integer, а не типом коллекции как массив или список), которые можно десериализовать из объекта JSON. JsonObjectAttribute также можно добавить к типу, чтобы заставить его десериализовать объект JSON. Путь 'строка', строка 1, позиция 8.

данные:

{"rows":[{"id":"232333","name":"nam"},{"id":"3434444","name":"2ndName"}]} 
+0

Пожалуйста, покажите * текст * JSON, который вы получили, - эта фотография действительно не помогает вообще. Вы также не сказали, что произошло с любым из подходов, которые вы уже предприняли. –

ответ

6

Если я прочитал вашу структуру данных JSON правильно вы хотите:

public class Root 
{ 
    public List<Customer> rows { get; set; } 
} 

и

var data = JsonConvert.DeserializeObject<Root>(val); 

Проведенный код:

void Main() 
{ 
    var test = JsonConvert.DeserializeObject<Root>("{\"rows\":[{\"id\":\"232333\",\"name\":\"nam\"},{\"id\":\"3434444\",\"name\":\"2ndName\"}]}"); 

    Console.WriteLine(test.rows[0].id); // prints 232333 
} 

public class Customer 
{ 
    public int id { get; set; } 
} 

public class Root 
{ 
    public List<Customer> rows { get; set; } 
} 
+0

Я получаю нуль таким образом. – Akbari

+0

@Akbari Не могли бы вы разместить фактический JSON (а не только изображение)? – asgerhallas

+0

Можете ли вы удалить свой ответ, поэтому я могу удалить этот вопрос. По-видимому, это не то, что должно быть. – Akbari

Смежные вопросы