Как я могу поместить двойные кавычки внутри строки в ответ ajax JSON от php?
Я получаю ответ JSON в запросе Ajax с сервера. Таким образом он работает:
{ "a": "1", "b" : "hello 'kitty'" }
Но мне не удалось поставить двойные кавычки вокруг котенка.
Когда я конвертирую "в\x22 в ответе Ajax, он по-прежнему интерпретируется как" по JavaScript и я не могу разобрать JSON.
Должен ли я также избежать\и unescape позже (что было бы возможно)?
Как это сделать?
Изменить: я не уверен, правильно ли я это выразил: я хочу эту строку внутри "b" после синтаксического анализа:
hello "kitty"
При необходимости я мог бы добавить дополнительный шаг после анализа для преобразования "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 . '"}';
Ответы
Ответ 1
Просто избегайте его обратным слэшем:
> 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.
Ответ 2
используйте только json_encode (любой элемент PHP), он автоматически анализирует.
Ответ 3
Немного не по теме, вы можете использовать JavaScript/NodeJS на своем сервере и использовать литералы шаблонов ES6 (обратные ссылки `` используются вокруг "христианских" ), но через 7 лет вы, вероятно, уже используете NodeJS:)
var myJSON = {
"name": {
"first": `"Christian"`,
"last": "Broberg"
},
"age": 49,
"skills": [ "JavaScript", "React", "NodeJS" ],
"married": false,
"superpowers": null
}