Конференция "Прочее" » Что за правила json нарушились?
 
  • ВладОшин © (19.02.19 10:01) [0]
    есть 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]
    уже ни в чем )
    Уже никто никуда не идет (с)

    Все нормально. Просто хотелось понять
 
Конференция "Прочее" » Что за правила json нарушились?
Есть новые Нет новых   [134427   +34][b:0][p:0.001]