|
HTTP сервис: получить JSON структуру из запроса | ☑ | ||
---|---|---|---|---|
0
AsadRoman
15.06.17
✎
09:15
|
Из мобильного приложения в HTTP сервис приходит запрос.
Получаю и обрабатываю его: ТелоСтрока = Запрос.ПолучитьТелоКакСтроку(); СтрокаJSON = РаскодироватьСтроку(ТелоСтрока, СпособКодированияСтроки.КодировкаURL); Получаю строку вида: report_data={здесь JSON структура}&device_id="некоторое значение" report_data и device_id могут меняться местами, device_id может отсутствовать. Есть какой-нибудь универсальный метод выделения JSON структуры из всего этого? Ведь может случиться и так, что появятся еще какие-нибудь добавления. |
|||
1
Айболитов
15.06.17
✎
09:18
|
Джейсон = Новый ЧтениеJSON;
Джейсон.УстановитьСтроку(ТекстОтвета); Данные = ПрочитатьJSON(Джейсон); |
|||
2
AsadRoman
15.06.17
✎
09:19
|
А все остальное дерьмо само собой обрубится?
|
|||
3
Айболитов
15.06.17
✎
09:22
|
посмотри для начала. я просто не понял про какое дерьмо ты говоришь))
|
|||
4
BuHu
15.06.17
✎
09:22
|
||||
5
AsadRoman
15.06.17
✎
09:22
|
не прокатывает
|
|||
6
Юрий Лазаренко
15.06.17
✎
09:26
|
(0) Ну так разложи строку "report_data={здесь JSON структура}&device_id="некоторое значение"" сначала на пары "параметр-значение" путем разделения по символу "&", а потом эти пары раздели по "=". 5 минут кодинга.
|
|||
7
Айболитов
15.06.17
✎
09:26
|
(5) какая ошибка?
|
|||
8
AsadRoman
15.06.17
✎
09:28
|
Т.е. тупо парсить?
|
|||
9
AsadRoman
15.06.17
✎
09:29
|
В приложение возвращается 500. В отладчике без сообщения на строке
ОтчетыПриложения = ПрочитатьJSON(ЧтениеJSON) вываливается |
|||
10
AsadRoman
15.06.17
✎
09:31
|
А если внутри значений будут символы "=" что делать?
|
|||
11
Юрий Лазаренко
15.06.17
✎
09:33
|
(10) RegExp юзать
|
|||
12
zva
15.06.17
✎
09:35
|
(6) Ну разложи report_data={device_id="&",m&m=3}&device_id=3
Нету универсального способа, да и сервис странный - почему все в json не возвращать. |
|||
13
Неверный Параметр И
15.06.17
✎
09:42
|
(12) Как всегда, никто не хочет читать RFC.
Надо сначала разбивать строку на ключ значение, хоть регэкспами, хоть руками. Потом к значениям применять урлдекоде. И только потом, из полученного разбирать джейсон. |
|||
14
Юрий Лазаренко
15.06.17
✎
09:43
|
(12) Есть неуниверсальный: взять все, что справа от "report_data={", а в нем все, что слева от "}&"
|
|||
15
Юрий Лазаренко
15.06.17
✎
09:44
|
А так-то (13) прав: до urldecode никаких лишних "=" в запросе не будет.
|
|||
16
Мимохожий Однако
15.06.17
✎
10:53
|
(8) У метода ПрочитатьJSON() есть несколько параметров. В полученной структуре смотри тип значения и разворачивай.
|
|||
17
AsadRoman
15.06.17
✎
11:35
|
(12) Я об этом уже пятый месяц разработчику мобильного приложения кричу: дай мне чистый json. Ноль эмоций.
|
|||
18
AsadRoman
15.06.17
✎
11:38
|
А так-то я Json победил. Просто хотелось что-то универсальное или красивое выделять json. А (14) как-то не очень красиво.
|
|||
19
Юрий Лазаренко
15.06.17
✎
11:46
|
(18) Ну так делай как сказано в (6). С учетом (13) никаких проблем не будет. В итоге получишь структуру, где ключ - это имя параметра, значение - его значение.
|
|||
20
AsadRoman
15.06.17
✎
11:48
|
Все понятно. Всем СПАСИБО.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |