Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.09.2014, 19:34
Новичок на форуме
Отправить личное сообщение для llpoolerll Посмотреть профиль Найти все сообщения от llpoolerll
 
Регистрация: 15.09.2014
Сообщений: 5

Парсинг json с двойными кавычками
Всем привет!

Как правильно парсить двойные кавычки в JSON?
На php выдаю `json_encode($arr)` и в результате вижу:

{"firstname":"test","lastname":"te\"st"}


Через $.ajax это нормально преобразуется в объект.
Но как это распарсить без $.ajax?

Вот такой парсинг -

$.parseJSON('{"firstname":"opa","lastname":"test"}');

работает нормально

Вот такой -

$.parseJSON('{"firstname":"opa","lastname":"te\"st"}');

с ошибкой

И вот такой

$.parseJSON('{"firstname":"opa","lastname":"te\\"st"}');

снова нормально.
Ответить с цитированием
  #2 (permalink)  
Старый 15.09.2014, 19:35
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,480

llpoolerll, json_encode($arr) сразу преобразует как надо. Проблема надуманная.
__________________
29375, 35
Ответить с цитированием
  #3 (permalink)  
Старый 15.09.2014, 19:44
Новичок на форуме
Отправить личное сообщение для llpoolerll Посмотреть профиль Найти все сообщения от llpoolerll
 
Регистрация: 15.09.2014
Сообщений: 5

$var['a'] = 'qwe"qwe';
echo json_encode($var);

выдает
{"a":"qwe\"qwe"}

а затем
$.parseJSON('{"a":"qwe\"qwe"}');
выдает
SyntaxError: Unexpected token q
Ответить с цитированием
  #4 (permalink)  
Старый 15.09.2014, 19:47
Новичок на форуме
Отправить личное сообщение для llpoolerll Посмотреть профиль Найти все сообщения от llpoolerll
 
Регистрация: 15.09.2014
Сообщений: 5

http://api.jquery.com/jquery.parsejson/

Цитата:
The JSON standard does not permit "control characters" such as a tab or newline. An example like $.parseJSON( '{ "testing":"1\t2\n3" }' ) will throw an error in most implementations because the JavaScript parser converts the string's tab and newline escapes into literal tab and newline; doubling the backslashes like "1\\t2\\n3" yields expected results. This problem is often seen when injecting JSON into a JavaScript file from a server-side language such as PHP.
Ответить с цитированием
  #5 (permalink)  
Старый 15.09.2014, 19:47
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,480

llpoolerll, естсетвенно, что
$.parseJSON('{"a":"qwe\"qwe"}');
вызывает ошибку.
Потому что запись в коде '{"a":"qwe\"qwe"}' превращается в строку {"a":"qwe"qwe"}. Ответ же от сервера приходит уже в виде готовой строки {"a":"qwe\"qwe"}(чего можно добиться написав в коде '{"a":"qwe\\"qwe"}' ). Если в $.parseJSON ты подставишь ответ сервера, а не новосозданную строку - всё будет работать.
__________________
29375, 35

Последний раз редактировалось Aetae, 15.09.2014 в 19:49.
Ответить с цитированием
  #6 (permalink)  
Старый 15.09.2014, 19:47
Новичок на форуме
Отправить личное сообщение для llpoolerll Посмотреть профиль Найти все сообщения от llpoolerll
 
Регистрация: 15.09.2014
Сообщений: 5

Весь вопрос как добиться doubling backslashed))))
Ответить с цитированием
  #7 (permalink)  
Старый 15.09.2014, 19:48
Новичок на форуме
Отправить личное сообщение для llpoolerll Посмотреть профиль Найти все сообщения от llpoolerll
 
Регистрация: 15.09.2014
Сообщений: 5

Сообщение от Aetae Посмотреть сообщение
llpoolerll, естсетвенно, что
$.parseJSON('{"a":"qwe\"qwe"}');
вызывает ошибку.
Потому что запись в коде '{"a":"qwe\"qwe"}' превращается в строку {"a":"qwe"qwe"}. Ответ же от сервера приходит уже в виде строки {"a":"qwe\"qwe"}. Если в $.parseJSON ты подставишь ответ сервера, а не новосозданную строку - всё будет работать.
Спасибо! точно! попробую!!
Ответить с цитированием
  #8 (permalink)  
Старый 16.09.2014, 07:51
Профессор
Отправить личное сообщение для krasovsky Посмотреть профиль Найти все сообщения от krasovsky
 
Регистрация: 21.12.2012
Сообщений: 869

Сообщение от llpoolerll
Как правильно парсить двойные кавычки в JSON?
Использовать html-символы
Ответить с цитированием
  #9 (permalink)  
Старый 29.06.2016, 16:43
Новичок на форуме
Отправить личное сообщение для strelcov_a_a Посмотреть профиль Найти все сообщения от strelcov_a_a
 
Регистрация: 22.10.2012
Сообщений: 2

А почему бы не отдавать с сервера сразу json, а не строку?
Ответить с цитированием
  #10 (permalink)  
Старый 29.06.2016, 17:28
Аватар для dd_smol
Кандидат Javascript-наук
Отправить личное сообщение для dd_smol Посмотреть профиль Найти все сообщения от dd_smol
 
Регистрация: 08.03.2015
Сообщений: 131

Сообщение от strelcov_a_a Посмотреть сообщение
А почему бы не отдавать с сервера сразу json, а не строку?
JSON - Это строковое представления объекта ...
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу распарсить JSON. gorenie jQuery 3 29.11.2013 22:26
Парсинг JSON на Node.js l0ck3R AJAX и COMET 2 12.11.2013 15:22
JSON или JSONP для запросов на другой сервер? Метод GET, для длинных сообщений? Kotakota jQuery 5 23.08.2011 23:12
Парсинг JSON массива со скобками [ ] lightdesign jQuery 1 24.04.2011 15:35
jQuery. Обработка ошибок и JSON. mma_mma jQuery 3 19.07.2010 12:10