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

  • Автор темы Автор темы kasper
  • Дата начала Дата начала

kasper

Client
Регистрация
01.04.2012
Сообщения
139
Реакции
15
Баллы
18
Обращаюсь к серверу через get запрос, ответ получаю в формате json. Как правильно брать из него данные?
Пока, кроме использования регулярок, ничего лучше в голову не пришло.
 
+1
Да может у кого есть снипет на C# под это дело?
 
можно и подробнее, выложи результат который получаешь в json формате.
какие данные тебе нужны из него и в каком формате сохранить нужно.
 
можно и подробнее, выложи результат который получаешь в json формате.
какие данные тебе нужны из него и в каком формате сохранить нужно.
Это API sms-reg
К примеру, такой ответ:
Код:
Развернуть Свернуть Копировать
{response: RESPONSE, service:SERVICE, number:NOMER, msg:ANSWER }
Значение ключей нужно сохранить в соответствующие переменные
 
ты уверен что такой формат? может в кавычках двойных должны быть значения?
у json формат такой {"key1":"value1", "key2":"value2", "key3":"value3"}
Ответы приходят в кавычках. Просто я пример у них из фака скопировал, там они видимо забыли про кавычки
 
Я бы тоже не отказался от примера по пунктам
 
Что то я сомневаюсь что юзинг поможет...
Там чтобы удобно это все разробрать надо запилить свой формат объекта, а это делается за пределами main
 
Что то я сомневаюсь что юзинг поможет...
Там чтобы удобно это все разробрать надо запилить свой формат объекта, а это делается за пределами main
Cвой обьект создаем если из коробки .Net делать десериализацию json. Просто создаем класс, где свойствами буду ключи из json.

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

92ea99a8a2045935712e929b0daa35a2.png
 
Спасибо, но я их просто ненавижу эти регулярки :)
И у меня в другом месте схожие строчки в пхп над разложить, думал мож помогут :)
 
Спасибо, но я их просто ненавижу эти регулярки :-)
И у меня в другом месте схожие строчки в пхп над разложить, думал мож помогут :-)

а без регулярок вообще никуда..
я тоже регулярки не знаю и не люблю..
но с помощью Тестера регулярок в PM - проблем у меня нет..
тестер сгенерит тебе почти любую регулярку и она на 100% будет работать..
 
иногда регулярничать json нереально. это касается динамических типов.
Я нашел выход в данной ситуации, используюя Newtonsoft.Json.Linq.
Пример:
Код:
Развернуть Свернуть Копировать
jarray = Newtonsoft.Json.Linq.JArray.Parse(text)
Здесь я работаю с jarray как с многомерным динамическим массивом.
Можно определить свой тип данных и парсить с ним.
 
LexxWork Если у вас есть желание и возможность - я бы немножко пристал с определением своего типа данных.... (но правда под xml-rpc)
 
Подниму немного темку.

Дело в том, что тоже столкнулся с необходимостью распаршивания ответа в 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
Пока без сроков точных)
 
Движется дело?
 
Нет пока
 
Тоже встала задача парсинга json ответа. Сейчас буду на JavaScript придумывать что-нибудь.
 
кстати джаваскрипт вариант, только вам прийдется выполнять его в браузере.
как-то так
C#:
Развернуть Свернуть Копировать
return instance.ActiveTab.MainDocument.EvaluateScript("return JSON.stringify(JSON.parse('{\"date\": \"22/03/14\"}').date)");
но есть минусы
1.чтбы вы не делали, все равно в итоге получите результат в виде текста, т. е. в итогде все равно будете сплитить данные
2.скорей всего будете использовать foreach для чего нибудь и окажется что скрипт вернет вам данные пустыми, потому что джаваскрипт в какой-то мере асинхронный. Насколько я помню, я столкнулся с этой проблемой и решил ее только тем что ждал пока скрипт не выполнится полностью. Сигналом для этого служил созданный на странице дом елемент. Короче извращение еще то.
Если столкнетесь с такими проблемами, попробуйте либу для джейсона Json.NET
 
Да, геморно как-то получается с JS, вчера уснул, пока протестил пару вариантов. Всё-таки проще будет распарсить регулярками. Спасибо!
 
Поддерживаю встроить JSON. Многие отдают API в нём, а распарсить его с кучей уровней вложенности - очень геморно бывает.
 
Поднимаю тему. Нужная вещь!
 

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