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