ошибка анализа json с двойными кавычками

Введите в командной строке следующее:

php -f filename.php

Убедитесь, что filename.php включает и выполняет функцию, которую вы хотите протестировать. Все, что вы выводите на экран, появится в консоли, включая ошибки.

Будьте осторожны, так как часто php.ini для Apache PHP отличается от CLI PHP (интерфейс командной строки).

Ссылка: https://secure.php.net/manual/en/features.commandline.usage.php

.

47
задан Varun 4 June 2009 в 10:09
поделиться

4 ответа

Ну, наконец, синтаксический анализ JSON использует тот же eval, поэтому нет никакой разницы, когда вы задаете им что-то. с неправильным синтаксисом. В этом случае вам нужно правильно экранировать кавычки в php, а затем экранировать их и их экранирующую косую черту с помощью json_encode

<?php
    $json = '{"result": ["lunch", "\"Show\""] }';
    echo json_encode($json);
?>

OUTPUT: "{\"result\": [\"lunch\", \"\\\"Show\\\"\"] }"

Это должно работать на клиентском JS (если я не сделал опечаток).

30
ответ дан 26 November 2019 в 19:39
поделиться

Я настоятельно рекомендую BOUML . Его обратная поддержка Java абсолютно ROCK SOLID .

BOUML имеет много других преимуществ:

  • он чрезвычайно быстрый ( самый быстрый UML-инструмент из когда-либо созданных, проверьте тесты производительности ),
  • имеет надежную поддержку импорта C ++, Java, PHP и других,
  • многоплатформенный (Linux, Windows, другие ОС),
  • имеет отличную поддержку экспорта SVG, что важно, поскольку просмотр больших графиков в векторном формате, который быстро масштабируется, например, в Firefox, очень удобен (вы можете быстро переключаться между представлением "с высоты птичьего полета" и представлением подробностей класса),
  • он полнофункциональный, впечатляюще интенсивно разработанный (см. история разработки , трудно поверить, что такой быстрый прогресс возможен).
  • поддерживает плагины, первая строка ( '{"result": ["обед", "\" Показать \ ""]}' ) воспринимается парсером json как {"результат": ["обед", "" Показать ""]} , потому что \ " в javascript означает " , но не выходит из строка с двойными кавычками.

    Вторая строка '{"result": ["обед", "\\\" Show \\\ ""]}' сначала неэкранируется в {" result ": [" обед "," \ "Показать \" "]} (и это правильно неэкранировано json).

    Я думаю, что '{"result": ["обед", "\\" Показать \\ ""]}' тоже должно работать.

34
ответ дан 26 November 2019 в 19:39
поделиться

Из docs

JSON_HEX_APOS (целое) Все 'конвертируются в \ u0027
JSON_HEX_QUOT (целое) Все "преобразованы в \ u0022

json_encode () принимает два аргумента, значение и параметры. Так что попробуйте

json_encode($result, JSON_HEX_QUOT); // or
json_encode($result, JSON_HEX_QUOT | JSON_HEX_APOS);

Я не пробовал этого.

10
ответ дан 26 November 2019 в 19:39
поделиться

Отключите magic_quotes_gpc в php.ini .

3
ответ дан 26 November 2019 в 19:39
поделиться
Другие вопросы по тегам:

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