2015-06-24 2 views
-2

У меня есть данные в следующем формате. Я хочу преобразовать эти данные в объекты.Преобразование json в объекты в C#

Result = { 
"Location": [ 
"bangalore", 
    1, 
"chennai", 
    1, 
"mumbai", 
    1, 
"delhi", 
    0, 
"Agra", 
    0 
] 
} 

В моих Location.cs у меня есть следующие поля. Я хочу присвоить данные этим полям. Как я могу добиться этого

public string loc { get; set; } 
public int count { get; set; } 

Я попытался с

Location = Result.ToObject<List<Location>>(); 

, но не работает получать следующую ошибку

{ "Невозможно десериализации текущий объект JSON (например, {\" имя \ ": \" value \ "}) в тип 'System.Collections.Generic.List`1 [Location]', потому что для правильного десериализации правильно требуется массив JSON (например, [1,2,3]). \ r \ nTo исправить эту ошибку либо изменить JSON на массив JSON (например, [1,2,3]), либо изменить десериализованный тип e, так что это обычный тип .NET (например, не примитивный тип типа integer, а не тип коллекции, такой как массив или List), который можно десериализовать из объекта JSON. JsonObjectAttribute также может быть добавлен к типу, чтобы заставить его десериализацию из объекта JSON. \ Г \ nPath «Location». "}

+1

Просьба дать более подробную информацию о том, что вы уже сделали, чтобы решить эту проблему. – Nitram

+0

Я попытался с Result.ToObject <Список >() – Superprogrammer

+1

Возможный дубликат [Как преобразовать объект JSON в пользовательский объект C#?] (Http://stackoverflow.com/questions/2246694/how-to-convert-json- object-to-custom-c-sharp-object) – voytek

ответ

0

проблема заключается в следующем: Result является JSON объект, а не массив JSON, поэтому вы не можете преобразовать его в List<Location>

вы бы нужен класс, который содержит список мест и. конвертировать в этот класс:

public class LocationsContainer 
{ 
    public List<Location> Location { get; set; } 
} 

Result.ToObject<LocationsContainer>(); 
0

Попробуйте использовать библиотеку Json.NET.

List<Location> locations = JsonConvert.DeserializeObject<List<Location>>(result); 
+0

Получение ошибки Наилучшее перегруженное соответствие метода для 'Newtonsoft.Json.JsonConvert.DeserializeObject > (string) 'имеет некоторые недопустимые аргументы – Superprogrammer

+0

попытаться изменить свойство ** count ** from _int_ to _string_ – zholinho

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