3 / 2 / 1
Регистрация: 13.05.2013
Сообщений: 234
1

Как правильно десериализовать ответ в Json

19.01.2018, 05:50. Показов 602. Ответов 1
Метки нет (Все метки)

Как правильно десериализовать ответ в Json (С вложенными классами) используя библиотеку Newtonsoft.Json?

JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
{
  "success": true,
  "code": "OK",
  "msg": "Operation succeeded.",
  "data": {
    "coinType": "KCS",
    "trading": true,
    "lastDealPrice": 5040,
    "buy": 5000,
    "sell": 5040,
    "coinTypePair": "BTC",
    "sort": 0,
    "feeRate": 0.001,
    "volValue": 308140577,
    "high": 6890,
    "datetime": 1506050394000,
    "vol": 5028739175025,
    "low": 5040,
    "changeRate": -0.2642
  }
}
Генерирую классы на сайте http://json2csharp.com/
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class Data
{
    public string coinType { get; set; }
    public bool trading { get; set; }
    public int lastDealPrice { get; set; }
    public int buy { get; set; }
    public int sell { get; set; }
    public string coinTypePair { get; set; }
    public int sort { get; set; }
    public double feeRate { get; set; }
    public int volValue { get; set; }
    public int high { get; set; }
    public long datetime { get; set; }
    public long vol { get; set; }
    public int low { get; set; }
    public double changeRate { get; set; }
}
 
}


JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
{
  "success": true,
  "code": "OK",
  "msg": "Operation succeeded.",
  "data": {
    "_comment": "arr[0]   Price arr[1]   Amount arr[2]   Volume",
    "SELL": [
      [
        20,
        5,
        100
      ],
      [
        19,
        5,
        95
      ]
    ],
    "BUY": [
      [
        18,
        5,
        90
      ],
      [
        17,
        5,
        85
      ]
    ]
  }
}
Генерирую классы на сайте http://json2csharp.com/
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
public class Data
{
    public string _comment { get; set; }
    public List<List<int>> SELL { get; set; }
    public List<List<int>> BUY { get; set; }
}
}


Поучая ответы в Json пытаюсь десериализовать с помощью классов

JsonResultWrapper<T>
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    public class JsonResultWrapper<T>
    {
        [JsonProperty("success")]
        public bool Success { get; set; }
 
        [JsonProperty("code")]
        public string code { get; set; }
 
        [JsonProperty("msg")]
        public string Message { get; set; }
 
        [JsonProperty("data")]
        public T Result { get; set; }
    }


и JsonResultArrayWrapper<T> соответственно
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
  public class JsonResultArrayWrapper<T>
    {
        [JsonProperty("success")]
        public bool Success { get; set; }
 
        [JsonProperty("code")]
        public string code { get; set; }
 
        [JsonProperty("msg")]
        public string Message { get; set; }
 
        [JsonProperty("data")]
        public IEnumerable<T> data { get; set; }
    }


var result = JsonConvert.DeserializeObject<JsonResultWrapper<Data>>(respo nse);

Но ничего не получается( Как правильно десериализовать с "вложенными классами"? (т.е. когда бывают массивы или класс в классе)
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.01.2018, 05:50
Ответы с готовыми решениями:

Как правильно спарсить JSON ответ?
Всем привет! Помогите, пожалуйста, с обработкой JSON ответа. Я привёл часть файла, на самом...

Как правильно десериализовать JSON?
Подскажите, что я делаю не так? using System; using System.Collections.Generic; using...

Сериализовать данные в JSON получилось, десериализовать ответ сервера - нет
Привет, писал программу и появилась потребность в &quot;общении&quot; с PHP скриптом. Скрипт уже был готов и...

Правильно десериализовать Json
Имеется класс public class Tick { public bool success { get; set; } ...

1
4 / 4 / 2
Регистрация: 29.10.2015
Сообщений: 76
19.01.2018, 12:00 2
Всё очень просто, вот, например, как я десериализуется json в объект c# на примере получения данных от Google Maps API:
C#
1
2
3
4
5
6
7
   var url = "https://maps.googleapis.com/maps/api/distancematrix/json?"
                     + "origins=" + city1
                     + "&destinations=" + city2
                     + "&key=" + GOOGLE_API_KEY;
 
                var json = _webClient.DownloadString(url);
                var distanceInfo = JsonConvert.DeserializeObject<GoogleDistanceInfo>(json);
где GoogleDistanceInfo - корневой элемент, полученный использованием указанного вами сервиса http://json2csharp.com/.

Добавлено через 17 минут
точнее GoogleDistanceInfo корневой класс, в нём есть и другие классы и массивы, главное указать на корневой класс JSON, остальное всё само преобразуется
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.01.2018, 12:00

Правильно десериализовать JSON
Доброго времени суток! Помогите правильно десериализовать пользуясь компонентом json.net Есть вот...

[JSON.NET] Как десериализовать Json с меняющимеся ключами?
Имеется структура Json ответа вида: { field1: { ...

Как десериализовать такой JSON
Уважаемые форумчане. Имеется вот такой JSON: { &quot;BTC_EUR&quot; : { &quot;avg&quot; : &quot;372.93547004&quot;, ...

Как десериализовать json-строку в обьект?
Есть клиент и сервер. Они общаються друг с другом через UDP протокол 50 раз в секунду. Сервер...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.