Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.74/34: Рейтинг темы: голосов - 34, средняя оценка - 4.74
13 / 13 / 2
Регистрация: 22.04.2010
Сообщений: 649
1

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

16.07.2015, 00:16. Показов 7082. Ответов 23

Author24 — интернет-сервис помощи студентам
Подскажите, что я делаю не так?
C#
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
33
34
35
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
 
namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
            string json = "{\"success\":true,\"price_prefix\":\"\",\"price_suffix\":\" pуб.\",\"prices\":[[\"Jul 15 2015 16: +0\",1.745,\"6\"],[\"Jul 15 2015 17: +0\",1.78,\"5\"],[\"Jul 15 2015 18: +0\",1.65,\"7\"]]}";
            Newtonsoft.Json.Linq.JObject obj = Newtonsoft.Json.Linq.JObject.Parse(json);
            Price[] objArr = JsonConvert.DeserializeObject<Price[]>(obj["prices"].ToString());
            foreach (Price Obj in objArr)
            {
                Console.WriteLine("Date: {0}", Obj.date);
                Console.WriteLine("Price: {0}", Obj.price);
                Console.WriteLine("Count: {0}", Obj.count);
                Console.WriteLine(new string('-', 10));
            }
            Console.ReadKey(true);
        }
    }
 
    [JsonObject(MemberSerialization.OptIn)]
    struct Price
    {
        public string date { get; set; }
        public string price { get; set; }
        public string count { get; set; }
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.07.2015, 00:16
Ответы с готовыми решениями:

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

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

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

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

23
Администратор
Эксперт .NET
17019 / 13372 / 5217
Регистрация: 17.03.2014
Сообщений: 27,342
Записей в блоге: 1
16.07.2015, 00:41 2
Лучший ответ Сообщение было отмечено koc94ok как решение

Решение

koc94ok, у тебя на вход следующий JSON:
JSON
1
2
3
4
5
[
  ["Jul 15 2015 16: +0", 1.745, "6"],
  ["Jul 15 2015 17: +0", 1.78, "5"],
  ["Jul 15 2015 18: +0", 1.65, "7"]
]
Это массив состоящий из массивов. Ты пытаешься десериализовать его в массив объектов. Чтобы это сработало нужно чтобы элементами массива были JSON объекты:
JSON
1
2
3
4
5
{
  "date": "Jul 15 2015 16: +0",
  "price": 1.745,
  "count":  "6"
}
Так это не наш случай, то придется делать по другому:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
...
string json = "{\"success\":true,\"price_prefix\":\"\",\"price_suffix\":\" pСѓР±.\",\"prices\":[[\"Jul 15 2015 16: +0\",1.745,\"6\"],[\"Jul 15 2015 17: +0\",1.78,\"5\"],[\"Jul 15 2015 18: +0\",1.65,\"7\"]]}";
var prices = JObject.Parse(json)["prices"].Children()
                .Select(j => new PriceItem { 
                    Date = (string)j[0],
                    Price = (float)j[1],
                    Count = (int)j[2]
});
foreach (PriceItem priceItem in prices)
{
    Console.WriteLine("Date: {0}", priceItem.Date);
    Console.WriteLine("Price: {0}", priceItem.Price);
    Console.WriteLine("Count: {0}", priceItem.Count);
    Console.WriteLine(new string('-', 10));
}    
...
class PriceItem
{
    public string Date { get; set; }
    public float Price { get; set; }
    public int Count { get; set; }
}
P.S. в price_suffix судя по всему русская строка в испорченном виде. Измени код получения JSON чтобы он использовал правильную кодировку.
1
13 / 13 / 2
Регистрация: 22.04.2010
Сообщений: 649
16.07.2015, 17:29  [ТС] 3
Еще такой вопрос, как перевести эту дату в формат DateTime чисто в секунды??
0
Администратор
Эксперт .NET
17019 / 13372 / 5217
Регистрация: 17.03.2014
Сообщений: 27,342
Записей в блоге: 1
16.07.2015, 19:50 4
koc94ok, лично мне данный формат - "Jul 15 2015 17: +0" - понятен только частично. В начале месяц/день/год, а что дальше мне непонятно. У тебя по идее есть его описание поэтому исходя из него составь строку формата для DateTime.ParseExact.
1
13 / 13 / 2
Регистрация: 22.04.2010
Сообщений: 649
20.07.2015, 16:46  [ТС] 5
OwenGlendower, С форматом я разобрался это UTC отклонение времени и сам парс даты из строки в общем будет таким:
C#
1
DateTime.ParseExact(stroka, "MMM dd yyyy HH':' z", CultureInfo.InvariantCulture);
Но мне интересно было как сделать это на стадии десериализации, пока не очень получается:

C#
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.Globalization;
 
namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
            string json = "{\"success\":true,\"price_prefix\":\"\",\"price_suffix\":\" pСѓР±.\",\"prices\":[[\"Jul 15 2015 16: +0\",1.745,\"6\"],[\"Jul 15 2015 17: +0\",1.78,\"5\"],[\"Jul 15 2015 18: +0\",1.65,\"7\"]]}";
            var prices = JObject.Parse(json)["prices"].Children()
                            .Select(j => new PriceItem
                            {
                                Date = (DateTime)j[0],
                                Price = (float)j[1],
                                Count = (int)j[2]
                            });
            foreach (PriceItem priceItem in prices)
            {
                Console.WriteLine("Date: {0}", priceItem.Date);
                Console.WriteLine("Price: {0}", priceItem.Price);
                Console.WriteLine("Count: {0}", priceItem.Count);
                Console.WriteLine(new string('-', 10));
            }   
            Console.ReadKey(true);
        }
    }
 
    class RockDate : JsonConverter
    {
        public override bool CanConvert(Type objectType)
        {
            return typeof(DateTime).IsAssignableFrom(objectType);
        }
 
        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            string timestamp = serializer.Deserialize<string>(reader);
            return DateTime.ParseExact(timestamp, "MMM dd yyyy HH':' z", CultureInfo.InvariantCulture);
        }
 
        public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
        {
            var date = (DateTime)value;
            serializer.Serialize(writer, date);
        }
    }
 
    public class PriceItem
    {
        [JsonConverter(typeof(RockDate))]
        public DateTime Date { get; set; }
 
        public float Price { get; set; }
 
        public int Count { get; set; }
    }
}
Как такое реализовать?
0
Администратор
Эксперт .NET
17019 / 13372 / 5217
Регистрация: 17.03.2014
Сообщений: 27,342
Записей в блоге: 1
20.07.2015, 17:38 6
Лучший ответ Сообщение было отмечено koc94ok как решение

Решение

koc94ok, насколько я понимаю атрибут JsonConverter сработает только при вызове JsonConvert.DeserializeObject(). При этом десериализовать нужно весь объект PriceItem сразу. То что ты назначил атрибут JsonConverter не играет никакой роли т.к. из строки Date = (DateTime)j[0] библиотека Json.NET никак не может узнать что это значение относится к типу PriceItem. Я бы не стал мудрить и написал обычную функцию для перевода:
C#
1
2
3
4
5
6
7
8
9
10
11
12
var prices = JObject.Parse(json)["prices"].Children()
                            .Select(j => new PriceItem
                            {
                                Date = ConvertPriceDate(j[0].ToString()),
                                Price = (float)j[1],
                                Count = (int)j[2]
                            });
...
static DateTime ConvertPriceDate(string s)
{
    return DateTime.ParseExact(s, "MMM dd yyyy HH':' z", CultureInfo.InvariantCulture);
}
Кстати возможно вместо DateTime лучше использовать DateTimeOffset если тебе нужно чтобы значение даты точно соответствовало значению из строки:
C#
1
2
3
4
static DateTime ConvertPriceDate(string s)
{
    return DateTimeOffset.ParseExact(s, "MMM dd yyyy HH':' z", CultureInfo.InvariantCulture).DateTime;
}
Если кроме чтения значений PriceItem тебе нужно их записывать обратно в JSON, то тогда есть смысл написать свой Converter. Он должен работать для всего PriceItem и делать то что сейчас делает метод Select. Ведь у тебя на входе не объект, а массив. То есть нам нужен конвертер JArray <-> PriceItem.
1
13 / 13 / 2
Регистрация: 22.04.2010
Сообщений: 649
20.07.2015, 17:52  [ТС] 7
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Кстати возможно вместо DateTime лучше использовать DateTimeOffset если тебе нужно чтобы значение даты точно соответствовало значению из строки:
Код C#
Зачем? В данном случае искомую дату переводит автоматически в местный часовой пояс, меня это устраивает.
0
Администратор
Эксперт .NET
17019 / 13372 / 5217
Регистрация: 17.03.2014
Сообщений: 27,342
Записей в блоге: 1
20.07.2015, 18:00 8
koc94ok, хорошо раз устраивает. Я поэтому и употребил слово "возможно"
0
13 / 13 / 2
Регистрация: 22.04.2010
Сообщений: 649
22.07.2015, 13:48  [ТС] 9
Javascript
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
{
    "result": {
        "230968023": {
            "icon_url": "W_I_5GLm4wPcv9jJQ7z7tz_l_0sEIYUhRfbF4arNQkgGQGKd3kMuVpMgCwRZrg-fckaVmPtFa-_fPQY2FZOxF0a-NaiPx0vyWoYQIoc0bz9AhIzrg00QBijXDLdCANArvs-Shwy5Dh3RJ2URl3QA-A",
            "icon_url_large": "W_I_5GLm4wPcv9jJQ7z7tz_l_0sEIYUhRfbF4arNQkgGQGKd3kMuVpMgCwRZrg-fckaVmPtFa-_fPQY2FZPASkWvM6jDw0v0XohCf9Y8bj4b3dm9gxsTXHDSDeAXXIEjvMmShgrtCVeZfDA-n5JB3KTzdw2wPA",
            "icon_drag_url": "",
            "name": "Inscribed Whalehook",
            "market_hash_name": "Inscribed Whalehook",
            "market_name": "Inscribed Whalehook",
            "name_color": "CF6A32",
            "background_color": "",
            "type": "Immortal weapon",
            "tradable": "1",
            "marketable": "1",
            "commodity": "0",
            "market_tradable_restriction": "7",
            "market_marketable_restriction": "7",
            "fraudwarnings": "",
            "descriptions": {
                "0": {
                    "type": "html",
                    "value": "Used By: Pudge",
                    "app_data": ""
                },
                "1": {
                    "type": "html",
                    "value": "Ideally, a hook made for reeling in enormous creatures of the deep would not gouge and hack into the bones and flesh of the prey. But Pudge doesn't much care if he makes a mess of his meat.",
                    "app_data": ""
                }
            },
            "tags": {
                "0": {
                    "internal_name": "strange",
                    "name": "Inscribed",
                    "category": "Quality",
                    "color": "CF6A32",
                    "category_name": "Quality"
                },
                "1": {
                    "internal_name": "Rarity_Immortal",
                    "name": "Immortal",
                    "category": "Rarity",
                    "color": "e4ae39",
                    "category_name": "Rarity"
                },
                "2": {
                    "internal_name": "wearable",
                    "name": "Wearable",
                    "category": "Type",
                    "category_name": "Type"
                },
                "3": {
                    "internal_name": "weapon",
                    "name": "Weapon",
                    "category": "Slot",
                    "category_name": "Slot"
                },
                "4": {
                    "internal_name": "npc_dota_hero_pudge",
                    "name": "Pudge",
                    "category": "Hero",
                    "category_name": "Hero"
                }
            },
            "classid": "230968023"
        },
        "success": true
    }
}
Подскажите нужно ли полностью десереализировать json, если мне нужно извлечь только некоторые поля. Хочу добыть иконки icon_url и icon_url_large. Убил кучу времени пытаясь раскурочить это дерево, помогите пожалуйста...

Наброски классов:

C#
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
        public class ApiResult
        {
            [JsonProperty("result")]
            public List<AfterResultApi> results { get; set; }
        }
 
        public class AfterResultApi
        {
            public List<Classid> classnum { get; set; }
 
            [JsonProperty("success")]
            public bool success { get; set; }
        }
 
        public class Classid
        {
            [JsonProperty("icon_url")]
            public string icon_url { get; set; }
 
            [JsonProperty("icon_url_large")]
            public string icon_url_large { get; set; }
 
            [JsonProperty("icon_drag_url")]
            public string icon_drag_url { get; set; }
 
            [JsonProperty("name")]
            public string name { get; set; }
 
            [JsonProperty("market_hash_name")]
            public string market_hash_name { get; set; }
 
            [JsonProperty("market_name")]
            public string market_name { get; set; }
 
            [JsonProperty("name_color")]
            public string name_color { get; set; }
 
            [JsonProperty("background_color")]
            public string background_color { get; set; }
 
            [JsonProperty("type")]
            public string type { get; set; }
 
            [JsonProperty("tradable")]
            public string tradable { get; set; }
 
            [JsonProperty("marketable")]
            public string marketable { get; set; }
 
            [JsonProperty("commodity")]
            public string commodity { get; set; }
 
            [JsonProperty("market_tradable_restriction")]
            public string market_tradable_restriction { get; set; }
 
            [JsonProperty("market_marketable_restriction")]
            public string mmarket_marketable_restriction { get; set; }
 
            [JsonProperty("fraudwarnings")]
            public string fraudwarnings { get; set; }
 
            [JsonProperty("descriptions")]
            public List<Descriptions> descriptions { get; set; }
 
            [JsonProperty("classid")]
            public string classid { get; set; }
        }
0
Администратор
Эксперт .NET
17019 / 13372 / 5217
Регистрация: 17.03.2014
Сообщений: 27,342
Записей в блоге: 1
22.07.2015, 14:08 10
Цитата Сообщение от koc94ok Посмотреть сообщение
Подскажите нужно ли полностью десереализировать json, если мне нужно извлечь только некоторые поля. Хочу добыть иконки icon_url и icon_url_large.
Нет. Я бы выбрал эти поля с помощью метода SelectToken:
C#
1
2
3
4
JObject j = JObject.Parse(json);
string jpath = j["result"].Children().Select(ch => ch.Path).First();
string icon_url = (string)j.SelectToken(jpath + ".icon_url");
string icon_url_large = (string)j.SelectToken(jpath + ".icon_url_large");
Я исходил из того что первый узел внутри result (здесь 230968023) может меняться между запросами. Если это не так, то код можно упростить:
C#
1
2
3
JObject j = JObject.Parse(json);
string icon_url = (string)j.SelectToken("result.230968023.icon_url");
string icon_url_large = (string)j.SelectToken("result.230968023.icon_url_large");
2
13 / 13 / 2
Регистрация: 22.04.2010
Сообщений: 649
28.07.2015, 21:16  [ТС] 11
OwenGlendower, А если приходит массив, можно ли его разбить на какой-нибудь как в прошлом примере с токенами, только массив в список , который будет отображать только два элемента объектов массива к примеру name,i_name не обращая внимания на другие данные
Javascript
1
2
[{"name":"12643069","i_name":"222"/*тут еще сотня другая массивов и вложенных объектов*/},
{"name":"12222","i_name":"3333"/*тут еще сотня другая массивов и вложенных объектов*/}]
0
Администратор
Эксперт .NET
17019 / 13372 / 5217
Регистрация: 17.03.2014
Сообщений: 27,342
Записей в блоге: 1
28.07.2015, 23:22 12
koc94ok, примерно так можно:
C#
1
2
3
4
5
6
7
8
9
10
11
class Smth
{
    public string Name { get; set; }
    public string I_name { get; set; }
}
...
JObject j = JObject.Parse(json);
JArray jarr = ...; // Находим JArray в нужном месте
List<Smth> someList = jarr.Children()
    .Select(_ =>  JsonConvert.DeserializeObject<Smth>(_.ToString()))
    .ToList();
Не факт что это самый эффективный метод из-за преобразования в строку внутри DeserializeObject, но он работает.
2
13 / 13 / 2
Регистрация: 22.04.2010
Сообщений: 649
29.07.2015, 22:46  [ТС] 13
OwenGlendower,
C#
1
// Находим JArray в нужном месте
Поясни этот момент?
0
Администратор
Эксперт .NET
17019 / 13372 / 5217
Регистрация: 17.03.2014
Сообщений: 27,342
Записей в блоге: 1
29.07.2015, 23:01 14
koc94ok, ты не привел полный пример JSON документа. Поэтому я не знаю в каком именно месте находится массив с данными. Поэтому шаг выборки массива из документа тебе нужно дописать самостоятельно.
0
13 / 13 / 2
Регистрация: 22.04.2010
Сообщений: 649
29.07.2015, 23:09  [ТС] 15
OwenGlendower, Документом и был массив. т.е. сразу начинается массив в документе
C#
1
2
[{"name":"12643069","i_name":"222"},
{"name":"12222","i_name":"3333"}]
Вот в таком формате, получить name и i_name, я если честно из описания jarray не очень понял как их получить,
C#
1
(JArray)j.SelectToken("name");
У меня вылетает еще ошибка до этого:
Error reading JObject from JsonReader. Current JsonReader item is not an object: StartArray. Path '', line 1, position 1.
Ругается на строку
C#
1
JObject j = JObject.Parse(json);
Т.е. получается он не может распознать этот массив? Посмотри пожалуйста конкретно этот случай.
0
Заблокирован
29.07.2015, 23:44 16
Лучший ответ Сообщение было отмечено koc94ok как решение

Решение

Цитата Сообщение от koc94ok Посмотреть сообщение
У меня вылетает еще ошибка до этого:
koc94ok, тогда используйте:
C#
1
 JToken.Parse(json);
Добавлено через 8 минут
koc94ok, Я не знаток JSONPath, думаю можно намного проще, чем такой вариант:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
using System;
using System.Collections.Generic;
using System.Linq;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
 
public class Smth
    {
        public string Name { get; set; }
        public string I_name { get; set; }
    }
 
public class Program
{
    public static void Main()
    {
         string json = @"[{""name"":""12643069"",""i_name"":""222"",""12"":""12"",""names"":""dsa""},{""name"":""12222"",""i_name"":""3333""}]";
         var names = JToken.Parse(json).SelectTokens("$..name").Values<string>();
         var i_name = JToken.Parse(json).SelectTokens("$..i_name").Values<string>();
         var list = names.Zip(i_name, (x, y) => new Smth { Name = x, I_name = y }).ToList();
         list.ForEach(x => Console.WriteLine("{0} [{1}]", x.Name, x.I_name));
    }
}
Код
12643069 [222]
12222 [3333]
https://dotnetfiddle.net/zGhwO1
1
Администратор
Эксперт .NET
17019 / 13372 / 5217
Регистрация: 17.03.2014
Сообщений: 27,342
Записей в блоге: 1
30.07.2015, 06:09 17
koc94ok,
Цитата Сообщение от koc94ok Посмотреть сообщение
Ругается на строку
C#
1
JObject j = JObject.Parse(json);
Т.е. получается он не может распознать этот массив?
Ты подаешь на вход JSON массив ([...]), в то время как JObject ожидает JSON объект ({...}). Надо использовать правильный класс для разбора.

В данном случае можно обойтись и без парсинга. JsonConvert умеет преобразовывать массив целиком:
C#
1
2
string json = @"[{""name"":""12643069"",""i_name"":""222"",""12"":""12"",""names"":""dsa""},{""name"":""12222"",""i_name"":""3333""}]";
Smth[] lisfOfSmth = JsonConvert.DeserializeObject<Smth[]>(json);
3
Заблокирован
30.07.2015, 10:33 18
OwenGlendower, не подскажите с JSONPath можно за 1 раз выбрать и name и i_name?
0
Администратор
Эксперт .NET
17019 / 13372 / 5217
Регистрация: 17.03.2014
Сообщений: 27,342
Записей в блоге: 1
30.07.2015, 14:45 19
Ev_Hyper, по моему нет.
1
13 / 13 / 2
Регистрация: 22.04.2010
Сообщений: 649
31.07.2015, 18:39  [ТС] 20
OwenGlendower, все работает.

Хочу пойти еще дальше :-)

Лазая по форуму набрел на такую вот замысловатую конструкцию:

C#
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
        public class GetDate
        {
            [JsonProperty("time"), JsonConverter(typeof(UnixTimestampConverter))]
            public DateTime Time { get; set; }
            //...
        }
 
        class UnixTimestampConverter : JsonConverter
        {
            static readonly DateTime unixEpoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
 
            public override bool CanConvert(Type objectType)
            {
                return typeof(DateTime).IsAssignableFrom(objectType);
            }
 
            public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
            {
                int timestamp = serializer.Deserialize<int>(reader);
                return unixEpoch.AddSeconds(timestamp);
            }
 
            public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
            {
                var date = (DateTime)value;
                var utcDate = date.ToUniversalTime();
                var timestamp = (int)(utcDate - unixEpoch).TotalSeconds;
 
                serializer.Serialize(writer, timestamp);
            }
        }
Можно ли использовать подобную конструкцию для обычного разбора строки? Которая десериализуется как объект "urlnumber"
имеем ответ json
C#
1
string json="{\"urlnumber\":\"http://yandex.ru/number/123531/\"}";
Необходимо получить "123531" т.е. единственное число в этой строке
C#
1
2
3
4
5
6
7
8
9
10
11
        public class GetNum
        {
            [JsonProperty("urlnumber"), JsonConverter(typeof(GetUrlNumber))]
            public int urlnumber { get; set; }
            //...
        }
 
        class GetUrlNumber : JsonConverter
        {
            //что тут писать чтобы правильно разобрать?
        }
Что тут писать чтобы правильно разобрать? Я пытался переделать, используя криворукий парсинг в ридерах/райтерах но у меня кажется полный бред. Помогите примером конвертера для этого случая, заранее спасибо.
0
31.07.2015, 18:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.07.2015, 18:39
Помогаю со студенческими работами здесь

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

Подскажите как десериализовать JSON строку в объекты?
{ &quot;животные&quot;:{ &quot;кошка&quot;:{ &quot;вес&quot;:5, &quot;передвижение&quot;:&quot;бежать&quot; },&quot;лошадь&quot;:{...

Как десериализовать JSON если имя объекта все время меняется ?
{ &quot;success&quot;: true, &quot;rgInventory&quot;: { &quot;14686634559&quot;: { &quot;id&quot;: &quot;14686634559&quot;, ...

Десериализовать JSON
Добрый вечер. Подскажите как правильно создать класс для десериализации вот такого jsona.


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru