Мастера DELPHI, Delphi programming community Рейтинг@Mail.ru Титульная страница Поиск, карта сайта Написать письмо 
| Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|
| Форумы
Здесь вы можете задать свой вопрос и наверняка получите ответ
| ЧАТ |
Место для общения :)
Орешник
Коллекция курьезных вопросов из форумов
Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / rsdn.org

 
Чтобы не потерять эту дискуссию, сделайте закладку « предыдущая ветвь | форум | следующая ветвь »

Что за правила json нарушились?


ВладОшин ©   (19.02.19 10:01

есть json, который не парсится. Сократил до минимума для демо ошибки

{"message": "{\"client_content_type\": \"image\/jpeg\",\"image\":{\"size\":{ \"width\": 1366,  \"height\": 768     }  },   \"visitor_id\": \"1fa08efd08f54787b4a6b5b61eab98a7\",   \"filename\": \"\Б\е\з\ы\м\я\н\н\ы\й.jpg\", \"content_type\": \"image\/jpeg\",\"guid\": \"f396ab5c806444d0882ceef5d9d56b74\",\"size\": 78957 }"   }

как выяснил, из-за \Б\е\з\ы\м\я\н\н\ы\й
если писать Безымянный - нормально проходит

http://priscree.ru/img/e1f95c3c8ba5f6.png


иосифович ©   (19.02.19 10:10[1]

это не json а какая-то фигня

{"message": "{\"client_c

зачем вложенный объект начинается с кавычки?

зачем неслужебные символы экранируются в "безымянный"?


xayam ©   (19.02.19 10:13[2]


> из-за \Б\е\з\ы\м\я\н\н\ы\й

по стандарту rfc 4627 это неправильно
(проверь на валидаторе https://jsonformatter.curiousconcept.com/)


xayam ©   (19.02.19 10:15[3]


> зачем вложенный объект начинается с кавычки?

да вот тоже заметил, это видимо у тебя передается где-то так, а не в json проблема


ВладОшин ©   (19.02.19 10:24[4]


> иосифович ©   (19.02.19 10:10) [1]
xayam ©  

это json в json )
не знаю зачем, так шлют нам. Формирую не я, я разбираю.. Мне в принципе это все не надо, мне другие ноды надо, но парсер падает на разборе такого

>> неслужебные символы экранируются
а, т.е. не надо экранировать если не надо?
я думал - по желанию, т.е. лишним не будет.. после \ просто бери символ как он есть.
Потому что черт его знает как юзер свой файл обзовет


Kerk ©   (19.02.19 10:26[5]


> ВладОшин ©   (19.02.19 10:24) [4]
>
> > иосифович ©   (19.02.19 10:10) [1]
> xayam ©  
>
> это json в json )

Это строка в json. И похоже строка криво экранированная.


xayam ©   (19.02.19 10:32[6]


> я думал - по желанию, т.е. лишним не будет.. после \ просто
> бери символ как он есть.
> Потому что черт его знает как юзер свой файл обзовет

вообще после \ нельзя абы что писать вот почитай
https://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D1%8B%D0%B5_%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F#%D0%9F%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D1%81%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB%D0%BE%D0%B2

по стандарту вот так правильно -
{
"filename":"\b.jpg"
}
потому что \b это специальный символ обозначающий границу слова и так можно писать.
и вот так неправильно -
{
"filename":"\п.jpg"
}
потому что нет такого представления символа в стандарте


ВладОшин ©   (19.02.19 10:47[7]

ясно, спасибо
наеду на приславших )


ВладОшин ©   (21.02.19 11:55[8]

выяснилось что они не \Б\е\з\ы\м\я\н\н\ы\й.jpg шлют,
а
\\uXXXX\\uXXXX\\uXXXX... .jpg
т.е. непосредственно коды, с экранированием

а парсер сначала \u4102 переделывает в букву, а потом перед ней слэш ставит..
какой-то старый модуль у нас, не знаю откуда

в общем, LkJSON v1.07 понимает правильно


KSergey ©   (21.02.19 12:29[9]

Только повсеместное и насильное внедрение православных ini-файлов спасёт этот мир!


xayam ©   (21.02.19 18:23[10]


> а
> \\uXXXX\\uXXXX\\uXXXX... .jpg
> т.е. непосредственно коды, с экранированием

вообще так по смыслу неправильно, означает
что должно быть просто \uXXXX\uXXXX\uXXXX
раз слэш экранирован


ВладОшин ©   (22.02.19 13:15[11]


> Только повсеместное и насильное внедрение православных ini-
> файлов спасёт этот мир!

хотелось бы )


> xayam ©   (21.02.19 18:23) [10]

не.. имхо
все-таки правильно я написал - json в ison
в одном из значений ноды json - записан другой json(или его отрывок). Кириллица в utf8 кодируется как \uXXXX
а что бы передать это, надо еще раз экранировать.

вытащив из \\uXXXX значение \uXXXX получаем опять json, к которому надо опять применить разбор


xayam ©   (22.02.19 22:22[12]


> а что бы передать это, надо еще раз экранировать.
> вытащив из \\uXXXX значение \uXXXX получаем опять json,
> к которому надо опять применить разбор

не а чем проблема, у тебя уже, раз работает, должно быть давно
быть сделано удаление этих ненужных слешей?


ВладОшин ©   (23.02.19 00:12[13]

уже ни в чем )
Уже никто никуда не идет (с)

Все нормально. Просто хотелось понять


версия для печати

Написать ответ

Ваше имя (регистрация  E-mail 







Разрешается использование тегов форматирования текста:
<b>жирный</b> <i>наклонный</i> <u>подчеркнутый</u>,
а для выделения текста программ, используйте <code> ... </code>
и не забывайте закрывать теги! </b></i></u></code> :)


Наверх

  Рейтинг@Mail.ru     Титульная страница Поиск, карта сайта Написать письмо