Я получаю ответ JSON в запросе Ajax с сервера. Таким образом, это работает:
{"a": "1", "b": "привет 'котенок'"}
Но я не преуспел в том, чтобы поместить двойные кавычки вокруг котенка.
Когда я преобразовываю "в \x22 в ответе Ajax, он все еще интерпретируется как" JavaScript, и я не могу проанализировать JSON.
Я должен также выйти \и не выйти позже (который был бы возможен)?
Как сделать это?
Править: Я не уверен, выразил ли я это хорошо: Я хочу эту строку в "b" после синтаксического анализа:
привет "котенок"
При необходимости я мог также добавить дополнительный шаг после синтаксического анализа для преобразования "b", но я предполагаю, что это не необходимо, существует более изящный путь, таким образом, это происходит автоматически?
Edit2: ajax страница сгенерирована php. Я попробовал несколько вещей теперь для создавания стоимости b, всего результата в ошибке анализа JSON на странице:
$b = 'hello "kitty"';
// no 1:
//$b = str_replace('"',"\x22",$b);
// or no 2:
// $b = addslashes($b);
// or no 3:
$b = str_replace('"','\"',$b);
echo '{ "a" : "1", "b" : "' . $b . '"}';
Edit3: Это решение наконец работает:
$b = 'hello "kitty"';
$b = str_replace('"','\\"',$b);
echo '{ "a" : "1", "b" : "' . $b . '"}';
Просто экранируйте его с помощью обратной косой черты:
> JSON.stringify({"a": 5, "b": 'a "kitty" mighty odd'})
{"a":5,"b":"a \"kitty\" mighty odd"}
> JSON.parse('{"a":5,"b":"a \\"kitty\\" mighty odd"}')
Object
a: 5
b: a "kitty" mighty odd
__proto__: Object
Анализаторы JSON распознают \ "
внутри строк с двойными кавычками как двойные кавычки. Обратите внимание, что во втором примере двойная обратная косая черта необходима, потому что есть Шаг парсера Javascript, затем еще один проход парсера JSON.
используйте только json_encode (любой элемент PHP), он будет автоматически разбираться.