Создание хорошего json с помощью str.replace

#javascript #regex #json

#javascript #регулярное выражение #json

Вопрос:

Я заметил, что если я помещу двойные кавычки в свои поля ввода, которые передаются в php через json, json_decode вернет null. Таким образом, я решил заменить двойные кавычки на " при создании моего json.

Таким образом, у меня есть что-то вроде:

 var valueToSet = input.replace(/"/gi, '\"');
  

Приведенный выше код заменяет "" на " … Это работает, и теперь я могу вводить такие вещи, как:

 Hello hi "" " " " ' ' '' ' ' ' """ 
  

ничего не нарушая. Однако, если я введу что-то вроде:

 Hello hi ""  "
  

он ломается. Как я могу включить в приведенную выше замену, чтобы косые черты также заменялись? И чем я должен заменить косые черты? с \ ?

Спасибо!

Ответ №1:

Вы не должны беспокоиться об этих проблемах. Я думаю, что вы создаете свой JSON вручную, в то время как вам следует использовать специальную функцию, которая позаботится об этих деталях за вас.

  • В библиотеке YUI JavaScript есть объект JSON с JSON.stringify методом, который будет работать во всех браузерах и будет использовать встроенную реализацию, если она присутствует.
  • Новые браузеры реализуют JSON.stringify (IE с версии 8.0, Firefox с версии 3.5, Chrome с версии 4.0, Safari с версии 4.0, Opera с версии 10.5)
  • Дуглас Крокфорд, написал библиотеку JSON
  • На стороне сервера PHP имеет json_encode
  • Существует поддержка любого другого языка на стороне сервера, см.json.org подробнее

Чтобы ответить на ваш последний вопрос, да, следует заменить на \ , но опять же, это должно быть сделано json_encode .

Комментарии:

1. Я дал вам 1, потому что вы правы; он действительно должен использовать функцию кодирования, а не пытаться создать ее вручную. Однако вы дали ему ответ на PHP, и он не спрашивает о том, как это сделать на PHP.

2. @Spudley, отредактировал мой ответ и дал вам 1, поскольку luquita, вероятно, создает JSON в JS. Приветствия

Ответ №2:

Создание строки JSON в Javascript обычно выполняется путем создания массива или объекта, который вы хотите преобразовать в JSON, а затем запуска stringify() метода для него.

Например:

 var myData = {....some stuff here....};
var myJSON = JSON.stringify(myData);
  

Смотрите эту страницу на json.org для получения дополнительной информации:http://www.json.org/js.html

Однако обратите внимание, что функциональность JSON stringify и parse доступна не во всех браузерах. Если вам необходимо поддерживать старые браузеры, вам может потребоваться использовать библиотеку для добавления этой функциональности. Библиотеки, такие как jQuery, включают функциональность кодирования JSON, а также доступны автономные библиотеки JSON.