Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
2 / 2 / 0
Регистрация: 20.11.2012
Сообщений: 36

Сериализовать JSON в object

03.04.2020, 15:44. Показов 1352. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
API на запрос возвращает JSON строку следующего вида:
Кликните здесь для просмотра всего текста
JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[
    {
        "n":<uint>, /* индекс строки (от 0) */
        "i1":<uint>,    /* номер первого сообщения в заданном интервале */
        "i2":<uint>,    /* номер последнего сообщения в заданном интервале */
        "t1":<uint>,    /* время первого сообщения в заданном интервале */
        "t2":<uint>,    /* время последнего сообщения в заданном интервале */
        "d":<int>,  /* количество строк следующего уровня вложенности */
        "c":[       /* массив ячеек */
            <text>,     /* значение ячейки текстовое */
            {       /* или объект */
                "t":<text>, /* значение ячейки */
                "y":<double>,   /* широта */
                "x":<double>    /* долгота */
            }           
        ]
    }
]

Образец данных:
Кликните здесь для просмотра всего текста
JSON
1
[{"n":0,"i1":89,"i2":119,"t1":1584515470,"t2":1584515631,"d":0,"c":["1",{"t":"2020-03-18 07:11","v":1584515470,"y":52.7649916667,"x":32.2739866667},{"t":"52.764992, 32.273987","y":52.7649916667,"x":32.2739866667},{"t":"2020-03-18 07:13","v":1584515631,"y":52.7617133333,"x":32.2770983333},{"t":"52.761713, 32.277098","y":52.7617133333,"x":32.2770983333},"0.81 km","0.00 km","0.81 km"]},{"n":1,"i1":126,"i2":623,"t1":1584516421,"t2":1584520189,"d":0,"c":["2",{"t":"2020-03-18 07:27","v":1584516421,"y":52.7617033333,"x":32.2772483333},{"t":"52.761703, 32.277248","y":52.7617033333,"x":32.2772483333},{"t":"2020-03-18 08:29","v":1584520189,"y":53.0069266667,"x":31.5774066667},{"t":"53.006927, 31.577407","y":53.0069266667,"x":31.5774066667},"12.18 km","53.49 km","65.66 km"]}]

Помогите создать класс для сериализации его... API стороннее, как то на него повлиять возможности нет
Кликните здесь для просмотра всего текста
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
    public class classname
    {
        public int n { get; set; }
        public int i1 { get; set; }
        public int i2 { get; set; }
        public int t1 { get; set; }
        public int t2 { get; set; }
        public int d { get; set; }
        public List<???> c { get; set; } 
    }
    public class classname1
    {
        public string ccc;
    }
 
    public class classname2
    {
        public string t { get; set; }
        public int v { get; set; }
        public double y { get; set; }
        public double x { get; set; }
    }
    public class classname3
    {
        public string t { get; set; }
        public double y { get; set; }
        public double x { get; set; }
    }
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.04.2020, 15:44
Ответы с готовыми решениями:

Ошибка при обработке Json - Cannot deserialize the current JSON array because the type requires a JSON object
Дополнительные сведения: Cannot deserialize the current JSON object (e.g. {&quot;name&quot;:&quot;value&quot;}) into type 'System.Collections.Generic.List`1'...

Ошибка при обработке Json - Cannot deserialize the current JSON array because the type requires a JSON object
Всем привет! Помогите, плиз, разобраться с ошибкой: An unhandled exception of type 'Newtonsoft.Json.JsonSerializationException'...

Какие объекты можно сериализовать и десериализовать в XML / JSON?
Здравствуйте. Как можно определять какие объекты можно серилизовать и десирилизовать в XML или JSON формат. Знаю точно что такие типы...

1
215 / 149 / 48
Регистрация: 28.12.2016
Сообщений: 716
03.04.2020, 16:39
Лучший ответ Сообщение было отмечено wlad1164 как решение

Решение

wlad1164, если 'c' динамическая штука, то так

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
static void Main(string[] args)
        {
            var data =
                "[{\"n\":0,\"i1\":89,\"i2\":119,\"t1\":1584515470,\"t2\":1584515631,\"d\":0,\"c\":[\"1\",{\"t\":\"2020-03-18 07:11\",\"v\":1584515470,\"y\":52.7649916667,\"x\":32.2739866667},{\"t\":\"52.764992, 32.273987\",\"y\":52.7649916667,\"x\":32.2739866667},{\"t\":\"2020-03-18 07:13\",\"v\":1584515631,\"y\":52.7617133333,\"x\":32.2770983333},{\"t\":\"52.761713, 32.277098\",\"y\":52.7617133333,\"x\":32.2770983333},\"0.81 km\",\"0.00 km\",\"0.81 km\"]},{\"n\":1,\"i1\":126,\"i2\":623,\"t1\":1584516421,\"t2\":1584520189,\"d\":0,\"c\":[\"2\",{\"t\":\"2020-03-18 07:27\",\"v\":1584516421,\"y\":52.7617033333,\"x\":32.2772483333},{\"t\":\"52.761703, 32.277248\",\"y\":52.7617033333,\"x\":32.2772483333},{\"t\":\"2020-03-18 08:29\",\"v\":1584520189,\"y\":53.0069266667,\"x\":31.5774066667},{\"t\":\"53.006927, 31.577407\",\"y\":53.0069266667,\"x\":31.5774066667},\"12.18 km\",\"53.49 km\",\"65.66 km\"]}]";
 
 
            var json = JsonConvert.DeserializeObject<List<RootObject>>(data);
        }
 
 
        public class RootObject
        {
            public int n { get; set; }
            public int i1 { get; set; }
            public int i2 { get; set; }
            public int t1 { get; set; }
            public int t2 { get; set; }
            public int d { get; set; }
            public List<object> c { get; set; }
        }
Добавлено через 23 минуты
P.s я не знаю как можно по индексу указать, чтобы автоматически делал. Вручную парсинг 'c' если всегда 8 в массиве и данные статически. Это выглядит так:

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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
 
        static void Main(string[] args)
        {
            var data =
                "[{\"n\":0,\"i1\":89,\"i2\":119,\"t1\":1584515470,\"t2\":1584515631,\"d\":0,\"c\":[\"1\",{\"t\":\"2020-03-18 07:11\",\"v\":1584515470,\"y\":52.7649916667,\"x\":32.2739866667},{\"t\":\"52.764992, 32.273987\",\"y\":52.7649916667,\"x\":32.2739866667},{\"t\":\"2020-03-18 07:13\",\"v\":1584515631,\"y\":52.7617133333,\"x\":32.2770983333},{\"t\":\"52.761713, 32.277098\",\"y\":52.7617133333,\"x\":32.2770983333},\"0.81 km\",\"0.00 km\",\"0.81 km\"]},{\"n\":1,\"i1\":126,\"i2\":623,\"t1\":1584516421,\"t2\":1584520189,\"d\":0,\"c\":[\"2\",{\"t\":\"2020-03-18 07:27\",\"v\":1584516421,\"y\":52.7617033333,\"x\":32.2772483333},{\"t\":\"52.761703, 32.277248\",\"y\":52.7617033333,\"x\":32.2772483333},{\"t\":\"2020-03-18 08:29\",\"v\":1584520189,\"y\":53.0069266667,\"x\":31.5774066667},{\"t\":\"53.006927, 31.577407\",\"y\":53.0069266667,\"x\":31.5774066667},\"12.18 km\",\"53.49 km\",\"65.66 km\"]}]";
 
 
            var json = JsonConvert.DeserializeObject<List<RootObject>>(data);
            
        }
 
 
        public class RootObject
        {
            public int n { get; set; }
            public int i1 { get; set; }
            public int i2 { get; set; }
            public int t1 { get; set; }
            public int t2 { get; set; }
            public int d { get; set; }
 
 
            private List<object> _c;
 
            public List<object> c
            {
                get { return _c; }
                set
                {
                    _c = value;
                    C_TryParse();
                }
            }
 
            public C c_normal { get; private set; }
 
            private void C_TryParse()
            {
                
                if (c.Count == 8)
                {
                    c_normal = new C
                    {
                        c1 = int.Parse((string)c[0]),
                        c2 = ((JObject) c[1]).ToObject<C2>(),
                        c3 = ((JObject)c[2]).ToObject<C3>(),
                        c4 = ((JObject)c[3]).ToObject<C2>(),
                        c5 = ((JObject)c[4]).ToObject<C3>(),
                        c6 = c[5].ToString(),
                        c7 = c[6].ToString(),
                        c8 = c[7].ToString(),
                    };
                }
            }
        }
 
        public class C
        {
            public int c1 { get; set; }
            public C2 c2 { get; set; }
            public C3 c3 { get; set; }
            public C2 c4 { get; set; }
            public C3 c5 { get; set; }
            public string c6 { get; set; }
            public string c7 { get; set; }
            public string c8 { get; set; }
        }
 
        public class C2
        {
            public string t { get; set; }
            public long v { get; set; }
            public double x { get; set; }
            public double y { get; set; }
        }
 
        public class C3
        {
            public string t { get; set; }
            public double y { get; set; }
            public double x { get; set; }
        }
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.04.2020, 16:39
Помогаю со студенческими работами здесь

Сериализовать DataTable в JSON
Доброго времени суток. Есть БД, с которой работаю через ADO.net, командой Select заполняя объект типа Table. Затем я хочу данные,...

Сериализовать класс, содержащий экземпляры других классов и листы с объектами типа object
Не получается сериализовать класс, содержащих экземпляры других классов и листы с объектами типа object, в которые записаны различные...

Newtonsoft Json.NET Подскажите как сериализовать private переменные
Всем здравствовать! У меня есть структура public struct Question { private string questionText; private int...

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

JSON object-generator
Ребят, проблема такого характера. Я отправляю get запросы на сервер, получаю респонс json-файлы. Все примерно такого формата. Нужна...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru