Данные в формате JSON

kasper

Client
Регистрация
01.04.2012
Сообщения
139
Благодарностей
15
Баллы
18
Обращаюсь к серверу через get запрос, ответ получаю в формате json. Как правильно брать из него данные?
Пока, кроме использования регулярок, ничего лучше в голову не пришло.
 

Gfoblin

Client
Регистрация
30.05.2013
Сообщения
4 518
Благодарностей
990
Баллы
113
+1
Да может у кого есть снипет на C# под это дело?
 

7make

Client
Регистрация
25.06.2011
Сообщения
1 547
Благодарностей
1 310
Баллы
113

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с 7make какие-либо сделки.

kasper

Client
Регистрация
01.04.2012
Сообщения
139
Благодарностей
15
Баллы
18
А можно попросить чуть подробнее?
По первой ссылке, как я понял, нужно скачать Json.NET. Куда ее устанавливать?
И для этого еще нужна
?
 

7make

Client
Регистрация
25.06.2011
Сообщения
1 547
Благодарностей
1 310
Баллы
113

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с 7make какие-либо сделки.

можно и подробнее, выложи результат который получаешь в json формате.
какие данные тебе нужны из него и в каком формате сохранить нужно.
 

kasper

Client
Регистрация
01.04.2012
Сообщения
139
Благодарностей
15
Баллы
18
можно и подробнее, выложи результат который получаешь в json формате.
какие данные тебе нужны из него и в каком формате сохранить нужно.
Это API sms-reg
К примеру, такой ответ:
Код:
{response: RESPONSE, service:SERVICE, number:NOMER, msg:ANSWER }
Значение ключей нужно сохранить в соответствующие переменные
 

7make

Client
Регистрация
25.06.2011
Сообщения
1 547
Благодарностей
1 310
Баллы
113

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с 7make какие-либо сделки.

ты уверен что такой формат? может в кавычках двойных должны быть значения?
у json формат такой {"key1":"value1", "key2":"value2", "key3":"value3"}
 

kasper

Client
Регистрация
01.04.2012
Сообщения
139
Благодарностей
15
Баллы
18
ты уверен что такой формат? может в кавычках двойных должны быть значения?
у json формат такой {"key1":"value1", "key2":"value2", "key3":"value3"}
Ответы приходят в кавычках. Просто я пример у них из фака скопировал, там они видимо забыли про кавычки
 

7make

Client
Регистрация
25.06.2011
Сообщения
1 547
Благодарностей
1 310
Баллы
113

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с 7make какие-либо сделки.

вот пример твой
1. добавь ссылку на библиотеку
2. добавь using
3. используй по примеру
 
  • Спасибо
Реакции: kasper

NNzet

Client
Регистрация
26.01.2014
Сообщения
114
Благодарностей
29
Баллы
28
Я бы тоже не отказался от примера по пунктам
 

Lexicon

Client
Регистрация
27.12.2012
Сообщения
1 775
Благодарностей
891
Баллы
113
Что то я сомневаюсь что юзинг поможет...
Там чтобы удобно это все разробрать надо запилить свой формат объекта, а это делается за пределами main
 

7make

Client
Регистрация
25.06.2011
Сообщения
1 547
Благодарностей
1 310
Баллы
113

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с 7make какие-либо сделки.

Что то я сомневаюсь что юзинг поможет...
Там чтобы удобно это все разробрать надо запилить свой формат объекта, а это делается за пределами main
Cвой обьект создаем если из коробки .Net делать десериализацию json. Просто создаем класс, где свойствами буду ключи из json.

http://json.codeplex.com/ уже предлагает все это. Содержит множество классов под все случаи работы с json.
Нужно просто потратить некоторое время на понимание что есть json, и как с ним работать.
Простой текстовый формат с некоторым синтаксисом и разметкой. По сути это словари {"key":"value"}
Учитывая что ответ ТС получает в виде строки, то проще написать регулярки ему, чем подрубать целую библиотеку.
 

kasper

Client
Регистрация
01.04.2012
Сообщения
139
Благодарностей
15
Баллы
18
Учитывая что ответ ТС получает в виде строки, то проще написать регулярки ему, чем подрубать целую библиотеку.
Честно говоря, так на регулярках и остановился:-)
 

Gfoblin

Client
Регистрация
30.05.2013
Сообщения
4 518
Благодарностей
990
Баллы
113
спалите регулярку
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 707
Баллы
113
спалите регулярку
Используйте встроенный тестер регулярок. Там все сделано для того, чтобы юзеры без опыта программирования могли составить нужный regexp

 

Gfoblin

Client
Регистрация
30.05.2013
Сообщения
4 518
Благодарностей
990
Баллы
113
Спасибо, но я их просто ненавижу эти регулярки :-)
И у меня в другом месте схожие строчки в пхп над разложить, думал мож помогут :-)
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 461
Благодарностей
8 686
Баллы
113
Спасибо, но я их просто ненавижу эти регулярки :-)
И у меня в другом месте схожие строчки в пхп над разложить, думал мож помогут :-)
а без регулярок вообще никуда..
я тоже регулярки не знаю и не люблю..
но с помощью Тестера регулярок в PM - проблем у меня нет..
тестер сгенерит тебе почти любую регулярку и она на 100% будет работать..
 

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
786
Баллы
113
иногда регулярничать json нереально. это касается динамических типов.
Я нашел выход в данной ситуации, используюя Newtonsoft.Json.Linq.
Пример:
Код:
jarray = Newtonsoft.Json.Linq.JArray.Parse(text)
Здесь я работаю с jarray как с многомерным динамическим массивом.
Можно определить свой тип данных и парсить с ним.
 

Lexicon

Client
Регистрация
27.12.2012
Сообщения
1 775
Благодарностей
891
Баллы
113
LexxWork Если у вас есть желание и возможность - я бы немножко пристал с определением своего типа данных.... (но правда под xml-rpc)
 

Sharpshooter

Client
Регистрация
18.03.2014
Сообщения
13
Благодарностей
5
Баллы
3
Подниму немного темку.

Дело в том, что тоже столкнулся с необходимостью распаршивания ответа в json-формате. Получается, "коробочных" средств зенка не предлагает?

Народ, какие методы можно использовать, если в json приходит сложная последовательность с вложенными объектами и массивами?

Типа такой:
Код:
{
   "firstName": "Иван",
   "lastName": "Иванов",
   "address": {
       "streetAddress": "Московское ш., 101, кв.101",
       "city": "Ленинград",
       "postalCode": 101101
   },
   "phoneNumbers": [
       "812 123-1234",
       "812 123-1234",
       "812 123-1234",
       "916 123-4567"
   ]
}
То есть, как я понял, если не прибегать к C# сниппетам, то для разбора такого объекта надо юзать регулярки, одна регулярка на парсинг 1 значения из всей json-последовательности? И даже в этом случае, к примеру, нетривиальной задачей становится выделение какой-нибудь определённого элемента массива внутри json-объекта. Если только через 2 прогона - в первом выделить весь массив PhoneNumbers, а вторым этапом распарсить имеющуюся строку в список?

Вопрос к разработчикам, возможно, имеет смысл добавить модуль, позволяющий работать с json-объектами нативными инструментами?
 
Последнее редактирование:
  • Спасибо
Реакции: codeby

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 707
Баллы
113
Поставили таску по этому вопросу.
 

Sharpshooter

Client
Регистрация
18.03.2014
Сообщения
13
Благодарностей
5
Баллы
3

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 707
Баллы
113
Пока без сроков точных)
 

Teko

Client
Регистрация
03.07.2014
Сообщения
35
Благодарностей
4
Баллы
8
Движется дело?
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 707
Баллы
113
Нет пока
 

zhifu

Client
Регистрация
22.04.2014
Сообщения
65
Благодарностей
20
Баллы
8
Тоже встала задача парсинга json ответа. Сейчас буду на JavaScript придумывать что-нибудь.
 

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
786
Баллы
113
кстати джаваскрипт вариант, только вам прийдется выполнять его в браузере.
как-то так
C#:
return instance.ActiveTab.MainDocument.EvaluateScript("return JSON.stringify(JSON.parse('{\"date\": \"22/03/14\"}').date)");
но есть минусы
1.чтбы вы не делали, все равно в итоге получите результат в виде текста, т. е. в итогде все равно будете сплитить данные
2.скорей всего будете использовать foreach для чего нибудь и окажется что скрипт вернет вам данные пустыми, потому что джаваскрипт в какой-то мере асинхронный. Насколько я помню, я столкнулся с этой проблемой и решил ее только тем что ждал пока скрипт не выполнится полностью. Сигналом для этого служил созданный на странице дом елемент. Короче извращение еще то.
Если столкнетесь с такими проблемами, попробуйте либу для джейсона Json.NET
 

zhifu

Client
Регистрация
22.04.2014
Сообщения
65
Благодарностей
20
Баллы
8
Да, геморно как-то получается с JS, вчера уснул, пока протестил пару вариантов. Всё-таки проще будет распарсить регулярками. Спасибо!
 

codeby

Client
Регистрация
25.08.2014
Сообщения
394
Благодарностей
53
Баллы
28
Поддерживаю встроить JSON. Многие отдают API в нём, а распарсить его с кучей уровней вложенности - очень геморно бывает.
 

ministor

Client
Регистрация
23.05.2014
Сообщения
8
Благодарностей
0
Баллы
3
Поднимаю тему. Нужная вещь!
 

Кто просматривает тему: (Всего: 2, Пользователи: 0, Гости: 2)