#php
#php
Вопрос:
Я пытаюсь декодировать следующую строку JSON с помощью json_decode. Декодирование завершается с ошибкой, поскольку строка содержит b
.
$json = '{
"question": {
"content": "$(2,4)$ : 2x-y=2\times \blue2-\pink4=0$ n res"
}}' ;
$result = json_decode($json);
print_r($result);
Мне интересно, каков наилучший способ декодирования?
Ответ №1:
Ну, p
это недопустимая escape-последовательность строк в JSON. Это должна быть двойная обратная косая черта. Это означает, что вы должны были использовать четырехкратную обратную косую черту для определения строки JSON в контексте PHP.
Обратная косая черта также ускользает в строках, заключенных в одинарные кавычки. Используйте print
, чтобы увидеть, какую фактическую строку вы создали, прежде чем передавать ее json_encode
.
Редактировать: b
вряд ли является причиной. Это символ колокола. p
однако это недопустимо. Смотрите http://json.org / для спецификации.
Комментарии:
1. Да, p является проблемой. Какие-либо фрагменты кода для очистки строки json, чтобы результирующий json соответствовал спецификации?
2. «очистка» — это не вещь. Нет способа надежно исправить все ошибки кодирования после факта. Исправьте ваше объявление строки.
3. ну, строка поступает из источника данных, и их 20 000. Поэтому исправление строки вручную не является вариантом.
4. Если строка на самом деле пришла «из источника данных» (не будьте такими расплывчатыми), как это, тогда она не нуждалась бы в исправлении. Проблема в том, что вы повторно объявляете ее как строку PHP здесь.