Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 07.10.2014
Сообщений: 62

Конвертировать json ответ в массив

15.09.2016, 21:48. Показов 2132. Ответов 7
Метки json (Все метки)

Студворк — интернет-сервис помощи студентам
Имеется строка с подобным содержанием
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
[{"gameID":"72903"
"scoutID":"928"
"away":"EAC Generals"
"home":"SSCR Golden Stags"
"status":"8"
"stream_id":"0"
"cover":"Stadium"
"oddsID":null,"price":"6.5"
"sport_id":"3"
"st_name":"finished"
"start_date_time":"2016-09-15 10:00:00"
"start_time":"06:00"
"start_date":"15.09.2016 06:00"
"booked":"0"
"league":"NCAA"
"region":"Philippines"}
 
{"gameID":"72904"
"scoutID":"928"
"away":"CSB Blazer"
"home":"MIT Cardinals"
"status":"8"
"stream_id":"0"
"cover":"Stadium"
"oddsID":null,"price":"6.5"
"sport_id":"3"
"st_name":"finished"
"start_date_time":"2016-09-15 12:00:00"
"start_time":"08:00"
"start_date":"15.09.2016 08:00"
"booked":"0"
"league":"NCAA"
"region":"Philippines"}
 
{"gameID":"75844"
"scoutID":"810"
"away":"HC Red Star Kunlun"
"home":"Amur Khabarovsk"
"status":"8"
"stream_id":"0"
"cover":"Stadium"
"oddsID":null,"price":"6.5"
"sport_id":"2"
"st_name":"finished"
"start_date_time":"2016-09-15 13:30:00"
"start_time":"09:30"
"start_date":"15.09.2016 09:30"
"booked":"0"
"league":"KHL"
"region":"Russia"}]
Как ее самым быстрым способом конвертировать в двумерный массив?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.09.2016, 21:48
Ответы с готовыми решениями:

Распарсить с помощью Json.Net приходящий ответ в виде JSON
Нужна помощь с json {"success":true, "rgInventory":{ "1025429056":{ "id":"1025429056", "classid":"310779217",...

Распарсить JSON ответ от вконтакте
Значит делаю запрос к контакту https://api.vk.com/method/likes.isLiked?owner_id=&item_id=&type=photo&access_token= потом я делаю...

Получить ответ в формате Json
Не могу разобраться как получить ответ с api на c#. Помогите получить данные с запроса ...

7
 Аватар для Lexeq
1151 / 743 / 483
Регистрация: 21.01.2014
Сообщений: 1,903
16.09.2016, 00:07
Это неправильный (в правильном объекты разделяются запятыми) JSON, поэтому стандартные средства не сработают. Либо руками парсить, либо попытаться привести к корректному виду. И как по вашему будет выглядеть двумерный массив из этого?
0
 Аватар для EveKS
601 / 485 / 185
Регистрация: 19.04.2016
Сообщений: 1,885
16.09.2016, 08:47
andrewromanov, там как бы не двумерный массив. И что такое, по вашему - двумерный массив?
Это двумерный массив?:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class A
{
public string Var1 {get;set;}
public string Var2 {get;set;}
public string Var3 {get;set;}
}
class B
{
void Foo()
{
// Или массив двумерный, или просто список...
List<A> = new List<A>{new A(), new A(), new A()};
}
}
В данном случае, проблема с запятыми - решаема. Как не странно, тут:
JavaScript
1
"oddsID":null,"price":"6.5"
есть запятая...
0
0 / 0 / 0
Регистрация: 07.10.2014
Сообщений: 62
16.09.2016, 09:45  [ТС]
EveKS,
нужно чтобы было как-то так


можете более подробно объяснить, как передать эту информацию из строки в массив?
Тот пример, что вы указали, я уже видел на stackoverflow, но разобраться так и не смог.
0
 Аватар для EveKS
601 / 485 / 185
Регистрация: 19.04.2016
Сообщений: 1,885
16.09.2016, 10:32
andrewromanov, JSON получить нужные параметры
Сейчас я, разобрал бы по иному, но всё же.
0
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
16.09.2016, 13:29
andrewromanov, откуда взялась это неправильная JSON строка?
0
0 / 0 / 0
Регистрация: 07.10.2014
Сообщений: 62
16.09.2016, 14:31  [ТС]
aquaMakc, сайт такую отдаёт

Добавлено через 5 минут
Господи, вот я дурак
Я изначально не оттуда скопировал строчку, вот так она выглядит.
JSON
1
[{"gameID":"75645","scoutID":"1204","away":"EARIST Red Fox","home":"OLFU Phoenix","status":"8","stream_id":"0","cover":"Stadium","oddsID":null,"price":null,"sport_id":"3","st_name":"finished","start_date_time":"2016-09-16 06:00:00","start_time":"06:00","start_date":"16.09.2016 06:00","booked":"0","league":"NAASCU","region":"Philippines"},{"gameID":"75646","scoutID":"1204","away":"PMMS Mariners","home":"PCU Dolfins","status":"8","stream_id":"0","cover":"Stadium","oddsID":null,"price":null,"sport_id":"3","st_name":"finished","start_date_time":"2016-09-16 08:00:00","start_time":"08:00","start_date":"16.09.2016 08:00","booked":"0","league":"NAASCU","region":"Philippines"},{"gameID":"79572","scoutID":"390","away":"Tocs\/Tunte (LAT)","home":"Nolvak\/Tiisaar (EST)","status":"8","stream_id":"0","cover":"Stadium","oddsID":null,"price":null,"sport_id":"42","st_name":"finished","start_date_time":"2016-09-16 08:40:00","start_time":"08:40","start_date":"16.09.2016 08:40","booked":"0","league":"EEVZA tour Georgia","region":"Europe"},{"gameID":"79574","scoutID":"1412","away":"Hudyakov\/Bogatov (RUS)","home":"Genov\/Lukianchykov (UKR)","status":"8","stream_id":"0","cover":"Stadium","oddsID":null,"price":null,"sport_id":"42","st_name":"finished","start_date_time":"2016-09-16 09:25:00","start_time":"09:25","start_date":"16.09.2016 09:25","booked":"0","league":"EEVZA tour Georgia","region":"Europe"},{"gameID":"79575","scoutID":"390","away":"Balabekyan\/Simoni (ARM)","home":"Dziadkou\/Kavalenka (BLR)","status":"8","stream_id":"0","cover":"Stadium","oddsID":null,"price":null,"sport_id":"42","st_name":"finished","start_date_time":"2016-09-16 10:10:00","start_time":"10:10","start_date":"16.09.2016 10:10","booked":"0","league":"EEVZA tour Georgia","region":"Europe"},{"gameID":"79577","scoutID":"1412","away":"Andrianov\/Safonov (RUS)","home":"Velichko\/Sivolap (RUS)","status":"8","stream_id":"0","cover":"Stadium","oddsID":null,"price":null,"sport_id":"42","st_name":"finished","start_date_time":"2016-09-16 10:10:00","start_time":"10:10","start_date":"16.09.2016 10:10","booked":"0","league":"EEVZA tour Georgia","region":"Europe"},{"gameID":"79576","scoutID":"390","away":"Regza\/Abolins (LAT)","home":"Medyanyk\/Reznik (UKR)","status":"8","stream_id":"0","cover":"Stadium","oddsID":null,"price":null,"sport_id":"42","st_name":"finished","start_date_time":"2016-09-16 10:55:00","start_time":"10:55","start_date":"16.09.2016 10:55","booked":"0","league":"EEVZA tour Georgia","region":"Europe"},{"gameID":"79578","scoutID":"1412","away":"Likholetov\/Leshukov (RUS)","home":"Smedins T.\/Solovejs A. (LAT)","status":"8","stream_id":"0","cover":"Stadium","oddsID":null,"price":null,"sport_id":"42","st_name":"finished","start_date_time":"2016-09-16 10:55:00","start_time":"10:55","start_date":"16.09.2016 10:55","booked":"0","league":"EEVZA tour Georgia","region":"Europe"}]
Вопрос по прежнему актуален
0
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
16.09.2016, 14:58
Цитата Сообщение от andrewromanov Посмотреть сообщение
Я изначально не оттуда скопировал строчку, вот так она выглядит.
Вот. Это уже похоже на правду. Для парсинга используй десериализацию JSON. Лично мне очень нравится Newtonsoft.JSON. Ставится из Nuget.
Создаёшь класс со свойствами, соответствующими данным из JSON пакета и десериализуешь в него эти данные. В итоге получаешь объект, содержащий данные из этой строчки в нужном тебе виде.

Добавлено через 9 минут
andrewromanov, пример из моего кода:
есть класс Tparameters:
Кликните здесь для просмотра всего текста

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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace RemConfig3
{
    public class TParameters
    {
        byte _kp, _pu;
        int _logLevel;
        uint _devNum;
        String _phone;
 
        public TParameters()
        {
            _pu = 1;
            _kp = 2;
            _devNum = 0;
            _logLevel = (int)Constants.logLevels.INFO;         
        }
             
        public byte KP
        {
            get { return _kp; }
            set { _kp = value; }
        }
 
        public byte PU
        {
            get { return _pu; }
            set { _pu = value; }
        }
 
        public uint DevNum
        {
            get { return _devNum; }
            set { _devNum = value; }
        }
 
        public int LogLevel
        {
            get { return _logLevel; }
            set { _logLevel = value; }
        }
 
        public String Phone
        {
            get { return _phone; }
            set { _phone = value; }
        }
    }
}


Эти параметры используются в программе и сохраняются в файл между сессиями программы.
При запуске программы я их получаю так:
C#
1
2
3
4
5
6
7
8
9
10
 parameters = new TParameters();
            try
            {
                if (File.Exists(Environment.CurrentDirectory + @"" + Constants.paramsPath))
                    parameters = JsonConvert.DeserializeObject<TParameters>(File.ReadAllText(Environment.CurrentDirectory + @"" + Constants.paramsPath));
            }
            catch (JsonException ex)
            {
                writeLog(ex.ToString(), Constants.LogTypes.ERROR, Constants.logLevels.ERROR);
            }
При работе программы параметры можно менять руками.

При закрытии программы сохраняю так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
        public void saveDefParams()
        {
            try
            {
                string paramsStr = JsonConvert.SerializeObject(parameters);
                File.WriteAllText(Environment.CurrentDirectory + @"" + Constants.paramsPath, paramsStr);
            }
            catch (Exception)
            {
                MessageBox.Show("Не удалось сохранить текущие параметры программы. Возможно, диск защищён от записи.");
            }
        }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.09.2016, 14:58
Помогаю со студенческими работами здесь

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

Как распарсить такой ответ от vk (json) ?
Здравствуйте! Помогите пожалуйста распарсить ответ от vk. В общем есть такой ответ в формате json: { &quot;response&quot;: }...

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

JSON-ответ. Объекты и массивы объектов
Добрый день! Есть определенный сайт, который отвечает на POST-запрос. Через Mozilla в среде разработчика вижу ответы в двух видах: ...

Получить ответ JSON в виде строки
Прошу прощения за возможные ошибки в вопросе. С помощью WebBrowser.Navigate() отправляется запрос. Работает корректно, но ответ...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru