php json encode двойные кавычки
Как избежать двойных кавычек в JSON
Я пытаюсь показать двойные кавычки, но он показывает одну из обратных косых черт:
6 ответов:
(только одна обратная косая черта ( \ ) перед кавычками).
Он показывает обратную косую черту, потому что вы также избегаете обратной косой черты.
помимо двойных кавычек, вы также должны избегать обратных косых черт, если вы хотите включить их в свою строку в кавычках JSON. Однако если вы собираетесь использовать обратную косую черту в escape-последовательности, очевидно, вы не должны избегать ее.
когда и где использовать \\» вместо. Хорошо, если вы похожи на меня, вы будете чувствовать себя так же глупо, как и я, когда я понял, что я делаю после того, как нашел эту нить.
+1: поскольку это текстовая строка JavaScript, двойная обратная косая черта двойная кавычка \» тоже будет работать; потому что двойная кавычка не нуждается в экранировании в одной цитируемой строке, например ‘\»‘ и ‘»‘ результат в той же строке JS.
обратите внимание, что это чаще всего происходит, когда содержимое было «дважды закодировано», что означает, что алгоритм кодирования был случайно вызван дважды.
первый вызов будет кодировать значение «text2»:
от: сегодня стартуют наши Rundreise «пример текста». Jeden Tag wird ein neues Reiseziel angesteuert bis wir.
TO: сегодня стартуют наши Rundreise \»пример\». Jeden Tag wird ein neues Reiseziel angesteuert bis ВИР.
вторая кодировка затем преобразует его снова, экранируя уже экранированные символы:
от: сегодня стартуют наши Rundreise \»пример\». Jeden Tag wird ein neues Reiseziel angesteuert bis wir.
TO: Heute startet unsere Rundreise \\\ » пример текста\\\». Jeden Tag wird ein neues Reiseziel angesteuert bis wir.
Итак, если вы несете ответственность за выполнение серверу, проверьте конечно, нет двух шагов, пытающихся кодировать одно и то же содержимое.
чтобы избежать обратных косых черт, которые вызывают проблемы для данных JSON, я использую эту функцию.
если вы хотите избежать двойной кавычки в JSON, используйте \\, чтобы избежать ее.
пример, если вы хотите создать json следующего объекта javascript
Одинарные и двойные кавычки в JSON
#1 определение неверно
#2 определение права
Я слышал, что в Python эта одиночная двойная цитата может быть взаимозаменяемой, может ли кто-нибудь объяснить это для меня?
7 ответов:
синтаксис JSON не синтаксис Python. JSON требует двойных кавычек для своих строк.
можно использовать ast.literal_eval()
вы можете сбросить JSON с двойной кавычкой:
demjson также является хорошим пакетом для решения проблемы плохого синтаксиса json:
использование:
Edit:
demjson.decode это отличный инструмент для поврежденных json, но когда вы имеете дело с большой amourt данных json ast.literal_eval Это лучший матч и гораздо быстрее.
Как уже было сказано, JSON не является синтаксисом Python. Вам нужно использовать двойные кавычки в JSON. Его создатель (in-)известен использованием строгих подмножеств допустимого синтаксиса для облегчения когнитивной перегрузки программиста.
Это очень полезным чтобы знать, что в строке JSON нет одинарных кавычек. Допустим, вы скопировали и вставили его из консоли браузера/все. Затем, вы можете просто ввести
в противном случае это может сломаться, если он также использовал одинарные кавычки.
недавно я столкнулся с очень похожей проблемой, и считаю мое решение будет работать для вас тоже. У меня был текстовый файл, который содержал список элементов в виде:
Я хотел разобрать выше в список python, но не был увлечен eval (), поскольку я не мог доверять входным данным. Я попробовал сначала использовать JSON, но он принимает только двойные кавычки, поэтому я написал свой собственный очень простой лексер для этого конкретного случая (просто подключите свой собственный «stringtoparse», и вы получите результат список: ‘предметы’)
надеюсь, это кому-нибудь пригодится. Наслаждайтесь!
(PHP 5 >= 5.2.0, PECL json >= 1.2.0, PHP 7)
json_encode — Возвращает JSON-представление данных
Описание
Список параметров
Все строковые данные должны быть в кодировке UTF-8.
И хотя это надмножество согласуется с расширенным определением «JSON текста» из новых » RFC 7159 (который старается заменить собой RFC 4627) и » ECMA-404, это все равно может приводить к проблемам совместимости со старыми парсерами JSON, которые строго придерживаются RFC 4627 с кодированием скалярных значений.
Задает максимальную глубину. Должен быть больше нуля.
Возвращаемые значения
Возвращает JSON закодированную строку ( string ) в случае успеха или FALSE в случае возникновения ошибки.
Список изменений
Примеры
Пример #1 Пример использования json_encode()
Результат выполнения данного примера:
Результат выполнения данного примера:
Пример #3 Пример с последовательными индексами начинающимися с нуля и непоследовательными индексами массивов
Результат выполнения данного примера:
Примечания
В случае ошибки кодирования, можно использовать json_last_error() для определения точной ошибки.
При кодировании массива в случае, если его индексы не являются последовательными числами от нуля, то все индексы кодируются в строковые ключи для каждой пары индекс-значение.
Смотрите также
Как избежать специальных символов при построении строки JSON?
Здесь сообщение содержит одиночную кавычку, которая совпадает с кавычкой, используемой в JSON. Что я делаю, так это заполняю строку из пользовательских данных, таких как сообщение. Итак, мне нужно избежать тех особых сценариев, которые нарушают код. Но кроме замены строки, есть ли способ заставить их убежать, но все же позволить HTML обработать их обратно к правильному сообщению?
7 ответов
См. этот список специальных символов, используемых в JSON:
Но это работает, как вы хотите этого или нет.
Для новых читателей всегда используйте двойные кавычки для строк json.
Я потрясен наличием дезинформации с высоким голосом по такому часто обсуждаемому вопросу по основной теме.
Версия Крокфорда и ECMA даже отображает определение строки, используя красивую картинку, которая должна четко и ясно прояснить ситуацию:
На красивой картинке также перечислены все допустимые escape-последовательности в строке JSON:
Обратите внимание, что вопреки бессмыслице в некоторых других ответах здесь, \’ никогда не является допустимой escape-последовательностью в строке JSON. Так не должно быть, потому что строки JSON всегда заключаются в двойные кавычки.
Я думаю, что мы все согласны с тем, что одиночные кавычки не настоящие. Как бы то ни было, нам все еще нужно решить вопрос о том, чтобы уйти «внутри строки json в двойных кавычках, в отсутствие библиотек, чтобы сделать это для нас.
Замена каждого «на \» НЕ ДОСТАТОЧНА: Пользователь может ввести ввод: \ и синтаксический анализ, опять же, не удается (подумайте почему).
Вместо этого сначала замените каждый \ на \ (двойной обратный слеш). Только после этого заменяйте каждое «на \» (с обратной косой чертой следует «).
Ответ на прямой вопрос:
В целях безопасности замените необходимый символ на \ u + 4-значный-шестнадцатеричное значение
Пример: Если вы хотите избежать апострофа, замените на \ u0027
D’Amico становится D’Amico
относительно сообщения AlexB:
экранирование одинарных кавычек действительно только в одинарных кавычках
двойные кавычки действительны только в двойных кавычках json
PHP JSON String, экранирование двойных кавычек для вывода JS
В JS файле я могу получить доступ к следующей информации:
В результате получается результат:
Ввод этого результата в http://jsonlint.com/ возвращает ошибку. Удаление двойных кавычек вокруг «special» проверяет строку.
Каков наилучший способ создать строку JSON из PHP и правильно ее избежать для использования в JS файле?
7 ответов
Тем не менее, цитаты «будут приводить к недействительным JSON, но это только проблема, если вы используете json_encode() и просто ожидаете, что PHP будет магически избегать ваших котировок. Вам нужно сделать эскалацию самостоятельно.
Другим способом было бы закодировать кавычки, используя htmlspecialchars:
Я успешно только что сделал это:
ПРИМЕЧАНИЕ: вы можете добавить опцию JSON_HEX_APOS чтобы заменить одиночную кавычку на значение HEX JSON_HEX_APOS если у вас есть JSON_HEX_APOS с одинарными JSON_HEX_APOS в JavaScript.
Использовать json_encode($json_array, JSON_HEX_QUOT); начиная с версии 5.3: http://php.net/manual/en/json.constants.php
Это решение, которое заботится о одинарных и двойных кавычках:
Я просто столкнулся с этой проблемой, и фактическая проблема заключалась в том, что я забыл добавить правильный заголовок приложения /json, прежде чем выплевывать фактические данные JSON.
У меня была проблема с пользователями, невинно вводящими €, а некоторые использовали двойные кавычки для определения своего контента. Я подправил пару ответов с этой страницы и других, чтобы, наконец, определить мой маленький маленький обходной путь
Я надеюсь, что это помогает кому-то/кому-то это улучшить.