Как я могу поместить двойные кавычки в строке в ajax JSON ответ от php?

Я получаю ответ 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 . '"}';
40
задан user89021 28 April 2010 в 19:36
поделиться

2 ответа

Просто экранируйте его с помощью обратной косой черты:

> 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.

56
ответ дан 27 November 2019 в 01:46
поделиться

используйте только json_encode (любой элемент PHP), он будет автоматически разбираться.

2
ответ дан 27 November 2019 в 01:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: