|
|
|
Непобеждённый JSON
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток! Столкнулся со следующей проблемой, есть небольшой JSON код, полученный мною путём преобразования ассоциативного массива вот этим php классом http://mike.teczno.com/JSON.tar.gz . Сам JSON код (сори что одной строкой, просто выкладываю как есть на всякий случай): Код: javascript 1. А вот пример странички, на которой я его пытаюсь парсить, используя соответстующий метод jQuery (parseJSON): http://sportkursk.ru/test.html Как Вам будет видно, при переходе на эту страницу, попытка парсинга оканчивается выбросом Exception. А вот что меня ставит в ступор, так это то, что я нашёл в интернете 5 - 6 онлайн валидаторов JSON, и все они сообщили что мой JSON код валиден и без проблем его распарсили. Объясните мне, почему здесь ( http://sportkursk.ru/test.html ) возникает ошибка?!?!? Сижу уже час в ступоре. Заранее спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2013, 17:16 |
|
||
|
Непобеждённый JSON
|
|||
|---|---|---|---|
|
#18+
Климов Дмитрий, попробуйте js-ный JSON.parse ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2013, 17:30 |
|
||
|
Непобеждённый JSON
|
|||
|---|---|---|---|
|
#18+
ЫLL HEAD, Добавил в код попытку с JSON.parse(), снова Exception... Перезалил для наглядности тестовый файл на сервер, теперь там можно наблюдать сообщения об обеих ошибках. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2013, 17:38 |
|
||
|
Непобеждённый JSON
|
|||
|---|---|---|---|
|
#18+
Попробовал у себя. Ошибка явно вылетает из-за экранирования \" внутри одинарных '. 2 решения: заменить \" на \' или вместо \" поставить " ; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2013, 17:48 |
|
||
|
Непобеждённый JSON
|
|||
|---|---|---|---|
|
#18+
IDVsbruck, Попробовал последовать вашему совету, заменив все экранированные двойные кавычки на " , $.parseJSON съел код без ошибок, а вот JSON.parse() по прежнему чем-то недоволен. Перезалил http://sportkursk.ru/test.html, посмотрите сейчас. Всё равно такого быть не должно, если код валидный. Значит ошибки где-то ешё... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2013, 18:07 |
|
||
|
Непобеждённый JSON
|
|||
|---|---|---|---|
|
#18+
Климов ДмитрийIDVsbruck, Попробовал последовать вашему совету, заменив все экранированные двойные кавычки на " , $.parseJSON съел код без ошибок, а вот JSON.parse() по прежнему чем-то недоволен. Перезалил http://sportkursk.ru/test.html, посмотрите сейчас. Всё равно такого быть не должно, если код валидный. Значит ошибки где-то ешё...надо было авторзаменить \" на \'у меня так робит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2013, 18:11 |
|
||
|
Непобеждённый JSON
|
|||
|---|---|---|---|
|
#18+
ЫLL HEAD, Обновил страницу: http://sportkursk.ru/test.html Как видно, воз поныне там, JSON.parse() выбрасывает Exception и с одинарными экранированными кавычками... Но меня даже больше не интересует не тот вопрос, чем заменить \" , для того, чтобы оба метода корректо отработали JSON код, а то, почему вот этот (к примеру) валидатор: http://paulisageek.com/json_validator/ отлично парсит исходный JSON без всяких правок и замен?!?! Посмотрел исходный код его страницы, делает он всё то же самое, что и мой скрипт. И у них код, вставленный копипастом, парсится с $.parseJSON без ошибок. Как такое возможно? Я проклят? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2013, 18:27 |
|
||
|
Непобеждённый JSON
|
|||
|---|---|---|---|
|
#18+
судя по вашей страничке, не победили еще у меня это работает: у меня это работает Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2013, 19:37 |
|
||
|
Непобеждённый JSON
|
|||
|---|---|---|---|
|
#18+
не надо экранировать символ / ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2013, 02:27 |
|
||
|
Непобеждённый JSON
|
|||
|---|---|---|---|
|
#18+
Может php-шный класс мутит? У меня на сервере при сериализации закрывающий слэш / и одинарная кавычка ' не экранируются, вместо шифрограммы ВСЕ используются обычные русские буквы, вроде всё работает через стандартный JSON.parse(req.responseText). Ваш код кстати нормально отрабатывает, присылаемый с сервера в таком виде в каком представлен в первом сообщений. А когда в javascript оборачиваете в ' ' при присвоении переменной, тогда и начинаются глюки. Если нужно формировать json именно на клиенте, то для этого есть - var json = JSON.stringify({"тут объект со всей этой длинной шняжкой"}); alert(result.listingContainer); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2013, 06:31 |
|
||
|
Непобеждённый JSON
|
|||
|---|---|---|---|
|
#18+
насколько знаю из регекспов, хоть каждый символ экраниру, беды от этого не будет в джсон не так? проверять лень ) в пхп юзаю json_encode . на клиенте - JSON.parse . и что там заэкранировано - не интересовался ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2013, 07:58 |
|
||
|
Непобеждённый JSON
|
|||
|---|---|---|---|
|
#18+
Яростный Мечне надо экранировать символ /+ Если экранировать символ /, то получим вместо закрывающего тега обычную строку, например "</div>" входящую в тег как текст. Явная ошибка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2013, 08:30 |
|
||
|
Непобеждённый JSON
|
|||
|---|---|---|---|
|
#18+
aswsЕсли экранировать символ /, то получим вместо закрывающего тега обычную строку, например "</div>" входящую в тег как текст. Явная ошибка.я проверил на этом: Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. в консоли: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2013, 09:00 |
|
||
|
Непобеждённый JSON
|
|||
|---|---|---|---|
|
#18+
Что с экранированием /, что без него, разницы пока не заметил. автору - Код: javascript 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2013, 09:16 |
|
||
|
Непобеждённый JSON
|
|||
|---|---|---|---|
|
#18+
aswsЕсли экранировать символ /, то получим вместо закрывающего тега обычную строку, например "</div>" входящую в тег как текст. Явная ошибка.Не из той темы прогнал, сорри. Вот разные наглядные варианты с кавычками Код: html 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2013, 09:31 |
|
||
|
Непобеждённый JSON
|
|||
|---|---|---|---|
|
#18+
IDVsbruck2 решения: заменить \" на \' или вместо \" поставить " ; " тоже работает. (почему-то Opera при этом ругается Declaration syntax error "background:#ffffff", но работает!) Код: javascript 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2013, 09:54 |
|
||
|
Непобеждённый JSON
|
|||
|---|---|---|---|
|
#18+
Что-то смутно припоминаю, что в json одинарная кавычка не экранируется и её нельзя использовать к примеру так - { 'my': '<div>text</div>' } но можно так - { "my": "<div style='background:#ffffff'>text</div>" } короче более подробно это в документацию лезть надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2013, 09:56 |
|
||
|
Непобеждённый JSON
|
|||
|---|---|---|---|
|
#18+
Самое первое JSON.parse(data); тут в дата должна быть строка а ты суешь ей массив обьектов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2013, 07:52 |
|
||
|
Непобеждённый JSON
|
|||
|---|---|---|---|
|
#18+
st_st Спасибо, буду использовать JSON.stringify() После обрабоки данным методом $.parseJSON начинает корректно работать, не в пример JSON.parse().. Но я уже подустал копать, просто хочу доделать проект и забыть о нём, так что останавлюсь на JSON.stringify(). ЫLL HEAD По поводу заменой \" на \' , вариавнт работает с $.parseJSON, но мне не совсем подходит по той причине, что в закодированной строке с названием товара могут одновременно использоваться как одинарная, так и двойная ковычка, например, у товара может быть заголовок: Men's Shoes Puma "FX500" Поэтому нежелательно насовсем прощаться с двойной кавычкой. Яростный мечь По поводу снятия экранирования со слэшей закрывающих HTML тэги внутри JSON кода, непонятно как они в принципе могут сказаться на работу хоть $.parseJSON, хоть JSON.parse. На всякий случай попробовал убрать - не помогло. qwerty2012 Если проверите тип переменной data, то увидете, что это string, а ни как не object. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2013, 11:27 |
|
||
|
Непобеждённый JSON
|
|||
|---|---|---|---|
|
#18+
IDVsbruck , я даже дальше пошёл, и заменил \" на " , но, опять же, это заставило работать только $.parseJSON, что нужно для того, чтобы и JSON.parse() не чюдил хз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2013, 11:40 |
|
||
|
Непобеждённый JSON
|
|||
|---|---|---|---|
|
#18+
заменил на decimal код (на форуме в посте выше он превратился в кавычку): " ; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2013, 11:42 |
|
||
|
Непобеждённый JSON
|
|||
|---|---|---|---|
|
#18+
Климов Дмитрий st_st qwerty2012 Если проверите тип переменной data, то увидете, что это string, а ни как не object. Продебаж код ясно все станет сразу стрингифи из обьекта в жейсон строку перегоняет а ты ей строку же и подсовываешь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2013, 12:05 |
|
||
|
Непобеждённый JSON
|
|||
|---|---|---|---|
|
#18+
Код: html 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2013, 12:12 |
|
||
|
|

start [/forum/topic.php?fid=22&msg=38224785&tid=1448449]: |
0ms |
get settings: |
6ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
155ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
65ms |
get tp. blocked users: |
1ms |
| others: | 215ms |
| total: | 475ms |

| 0 / 0 |
