0

Имеется строка в вида:

{"test":true,"list":[{"a":"aa","b":"bb"},{"a":"aa1","b":"bb1"},{"a":"aa2","b":"bb2"},{"a":"aa3","b":"bb3"}]}

Как мне ее Deserialize в объекты? Известно, что test - string значение, list - коллекция объектов. Данный обобьет доступен для проекта. Но не могу получить сначала коллекцию объектов, потом string значение.

Kromster
  • 13,809
shvedovea
  • 161
  • Постарайтесь писать более развёрнутые вопросы. Для получения ответа поясните, в чём именно вы видите проблему, как её воспроизвести, что вы хотите получить в результате и т. д. Приведите пример кода, который вы написали. – Kromster May 07 '19 at 04:01
  • @tym32167 это не ассоциативный массив в общем-то, это ещё более просто. – A K May 07 '19 at 06:28
  • @AK ну, тогда дубликат вот этого – tym32167 May 07 '19 at 06:45

2 Answers2

1

Используйте newtonsoft json

string json = @"{
  'Email': 'james@example.com',
  'Active': true,
  'CreatedDate': '2013-01-20T00:00:00Z',
  'Roles': [
    'User',
    'Admin'
  ]
}";

Account account = JsonConvert.DeserializeObject<Account>(json);

Console.WriteLine(account.Email);
// james@example.com
A K
  • 28,718
  • Всё это конечно неплохо и в правильном направлении - но вообще-то не показано самое главное: классы для десериализации (у вас - Account), да и показать лучше на тех же входных данных, что и у автора. – A K May 07 '19 at 06:30
1

Но не могу получить сначала коллекцию объектов, потом string значение.

Вот классы для десериализации:

public partial class Data
{
    [JsonProperty("test")]
    public bool Test { get; set; }

    [JsonProperty("list")]
    public List[] List { get; set; }
}

public partial class List
{
    [JsonProperty("a")]
    public string A { get; set; }

    [JsonProperty("b")]
    public string B { get; set; }
}

А вот сама десериализация:

var source = "{\"test\":true,\"list\":[{\"a\":\"aa\",\"b\":\"bb\"},{\"a\":\"aa1\",\"b\":\"bb1\"},{\"a\":\"aa2\",\"b\":\"bb" +
"2\"},{\"a\":\"aa3\",\"b\":\"bb3\"}]}";

var result = JsonConvert.DeserializeObject<Data>(source);

Вот результат:

введите сюда описание изображения

A K
  • 28,718