1

Не поддерживаются переносы строк в JSON

(edited by nicktime 20/04/2014 06:02:22)

Topic: Не поддерживаются переносы строк в JSON

Здравствуйте,

через Wialon Hosting remote API такой запрос работает:

svc=core/login&params={"user":"Cguard-adm",
               "password":"********",
               "operateAs":"Cguard-adm"}

Далее, стоит добавить перенос строки перед первой '{':

svc=core/login&params=
{"user":"Cguard-adm",
               "password":"********",
               "operateAs":"Cguard-adm"}

И теперь возвращается ошибка {"error":4}.
Полный URL: https://hst-api.wialon.com/wialon/ajax. … rd-adm%22}

Хотя такой запрос корректен в соответствии с синтаксисом JSON.

2

Не поддерживаются переносы строк в JSON

Re: Не поддерживаются переносы строк в JSON

В HTTP многие символы кодируются через %.
Вид указанного вами запроса с уже закодированными символами:
https://hst-api.wialon.com/wialon/ajax. … rd-adm%22}
Обратите внимание, что "%0A" перед params -- это и есть символ переноса строки. Его быть не должно.
Лучше всего не допускать подобных ошибок в запросах, их потом неприятно отлавливать.
Даю ссылку на HTTP-кодирование символов чеерз %: http://en.wikipedia.org/wiki/Percent-encoding

Maksim
Wialon Platform QA
Gurtam
3

Не поддерживаются переносы строк в JSON

(edited by nicktime 22/04/2014 12:16:45)

Re: Не поддерживаются переносы строк в JSON

"Дополнительные параметры («params») должны быть представлены в формате JSON."
http://sdk.wialon.com/wiki/ru/sidebar/r … /reqformat

"Insignificant whitespace is allowed before or after any token. The whitespace characters are: character
tabulation (U+0009), line feed (U+000A), carriage return (U+000D), and space (U+0020)."
Из спецификации JSON глава 4: http://www.ecma-international.org/publi … MA-404.pdf

Т.е. запрос корректен. Похоже на баг в парсере JSON на стороне Wialon.

4

Не поддерживаются переносы строк в JSON

(edited by mast 22/04/2014 13:15:15)

Re: Не поддерживаются переносы строк в JSON

nicktime, подчеркну то, что вы выделили: "Дополнительные параметры («params») должны быть представлены в формате JSON."
Буду дотошным и обращу ваше внимание, что запись "params={}" говорит о том, что в GET-запросе мы передаём параметр "params" со значением {...}. Так вот JSON-правило распространяется именно на {...}.
Вы же говорите о запросе https://hst-api.wialon.com/wialon/ajax. … rd-adm%22}, и перенос ставите до {...}.
Надеюсь, наше обсуждение JSON-тонкостей помогло Вам.

Maksim
Wialon Platform QA
Gurtam