json error syntax error 4

У меня очень странная проблема.

У меня есть веб-сервис JSON.

Но когда я загружаю свой JSON с этим кодом:

Я получил ошибку: SYNTAX ERROR

ЧТО НЕ ПОМОГАЕТ ПОЛНОЙ ВСЕ.

(но мне пока не удалось установить PHP 5.5, и я не уверен, что эта функция даст мне больше деталей)

Решение

Я столкнулся с той же проблемой, на самом деле есть некоторые скрытые символы, невидимые, и вам нужно удалить его.
Вот глобальный код, который работает во многих случаях:

Другие решения

Удаление BOM (Byte Order Mark) часто является решением, которое вам нужно:

У вас не должно быть спецификации, но если она есть, она невидима, поэтому вы ее не увидите !!

использование BOM Cleaner если у вас есть много файлов, чтобы исправить.

Я решил эту проблему, добавив stripslashes в строку, перед json_decode.

Чтобы собрать все вместе, я подготовил JSON-оболочку с расшифровкой автокорректирующих действий. Самую последнюю версию можно найти в моем GitHub Gist .

Вы не показывали свой JSON, но это похоже на то, что это может быть неверная последовательность UTF-8 в аргументе, большинство онлайн-валидаторов не поймают его.
убедитесь, что ваши данные UTF-8, а также проверьте, есть ли у вас иностранные символы.
Вам не нужен PHP5, чтобы увидеть вашу ошибку, используйте журнал ошибок() регистрировать проблемы.

Попробовав все решение без результата, это сработало для меня.

Надеюсь, это поможет кому-то

У меня была такая же проблема. Для меня это было вызвано echo »

В начале файла я объявил тег разрыва строки … Так что это была ошибка для меня. Удалив этот тег разрыва строки, я смог […]

(PHP 5 >= 5.3.0, PHP 7)

json_last_error — Возвращает последнюю ошибку

Описание

Возвращает последнюю ошибку (если она есть), произошедшую во время последнего кодирования/декодирования JSON если при вызове не использовался флаг JSON_THROW_ON_ERROR .

Список параметров

У этой функции нет параметров.

Возвращаемые значения

Возвращает целочисленное значение, которое может быть одной из следующих констант:

Коды ошибок JSON

Константа Значение Доступность
JSON_ERROR_NONE Ошибок нет
JSON_ERROR_DEPTH Достигнута максимальная глубина стека
JSON_ERROR_STATE_MISMATCH Неверный или некорректный JSON
JSON_ERROR_CTRL_CHAR Ошибка управляющего символа, возможно неверная кодировка
JSON_ERROR_SYNTAX Синтаксическая ошибка
JSON_ERROR_UTF8 Некорректные символы UTF-8, возможно неверная кодировка PHP 5.3.3
JSON_ERROR_RECURSION Одна или несколько зацикленных ссылок в кодируемом значении PHP 5.5.0
JSON_ERROR_INF_OR_NAN Одно или несколько значений NAN или INF в кодируемом значении PHP 5.5.0
JSON_ERROR_UNSUPPORTED_TYPE Передано значение с неподдерживаемым типом PHP 5.5.0
JSON_ERROR_INVALID_PROPERTY_NAME Имя свойства не может быть закодировано PHP 7.0.0
JSON_ERROR_UTF16 Некорректный символ UTF-16, возможно некорректно закодирован PHP 7.0.0

Примеры

Пример #1 Пример использования json_last_error()

// Неверная json-строка, которая вызовет синтаксическую ошибку,
// здесь в качестве кавычек мы используем ‘ вместо »
$json [] = «<'Organization': 'PHP Documentation Team'>» ;

foreach ( $json as $string ) <
echo ‘Декодируем: ‘ . $string ;
json_decode ( $string );

switch ( json_last_error ()) <
case JSON_ERROR_NONE :
echo ‘ — Ошибок нет’ ;
break;
case JSON_ERROR_DEPTH :
echo ‘ — Достигнута максимальная глубина стека’ ;
break;
case JSON_ERROR_STATE_MISMATCH :
echo ‘ — Некорректные разряды или несоответствие режимов’ ;
break;
case JSON_ERROR_CTRL_CHAR :
echo ‘ — Некорректный управляющий символ’ ;
break;
case JSON_ERROR_SYNTAX :
echo ‘ — Синтаксическая ошибка, некорректный JSON’ ;
break;
case JSON_ERROR_UTF8 :
echo ‘ — Некорректные символы UTF-8, возможно неверно закодирован’ ;
break;
default:
echo ‘ — Неизвестная ошибка’ ;
break;
>

Результат выполнения данного примера:

Пример #2 Совместное использование json_last_error() и json_encode()

// Некорректная последовательность UTF8
$text = «xB1x31» ;

$json = json_encode ( $text );
$error = json_last_error ();

var_dump ( $json , $error === JSON_ERROR_UTF8 );
?>

Результат выполнения данного примера:

Пример #3 json_last_error() и JSON_THROW_ON_ERROR

// Некорректная последовательность UTF8, вызывающая JSON_ERROR_UTF8
json_encode ( «xB1x31» );

// Не вызовет ошибки JSON
json_encode ( ‘okay’ , JSON_THROW_ON_ERROR );

// Глобальное состояние не будет изменено json_encode()
var_dump ( json_last_error () === JSON_ERROR_UTF8 );
?>

Результат выполнения данного примера:

Смотрите также

  • json_last_error_msg() — Возвращает строку с сообщением об ошибке последнего вызова json_encode() или json_decode()
  • json_decode() — Декодирует строку JSON
  • json_encode() — Возвращает JSON-представление данных

I had previously asked the same question. I would like to decode the json from: http://pad.skyozora.com/data/pets.json. Below is the code I used previously:

From the last answer I know there is UTF8 DOM in the json return. I tried the answer from a similar question: json_decode returns NULL after webservice call, but all of the answers not work for me.

And after do more research I found a way that works:

This successfully decode the json into array. However all Chinese and Japanese character string were removed too. Any ideas?

Edited:

and give me the error:

But I couldn’t see any problem with this part of json.

Оцените статью
SoftLast
Добавить комментарий