Невозможно декодировать схему элемента Dota JSON в переполнении стека

Недавно я получил схему элементов Dota 2, следуя этому руководству: http://roshpit.ghost.io/getting-updated-item-schema-for-dota2-despite-app570econ-api-being-down-for-5-months/

Поскольку файл действительно большой, каждый раз, когда я пытаюсь проверить его с помощью JSON-верификаторов, таких как JSONLint, они перестают отвечать. Это выглядит как правильный json, и, согласно руководству, это должен быть правильный json. Моя проблема в том, что когда я использую json_decode() в PHP он возвращает нулевое или пустое значение.

Я предполагаю, что он включает в себя некоторый тип символов, который не поддерживается PHP, и поэтому он возвращает ноль. Я прочитал что-то относительно UTF8 BOM, но я не уверен, что это проблема.

Может ли кто-нибудь помочь мне определить, что с ним не так?

я использовал var_dump() чтобы убедиться, что содержимое объекта, который я пытаюсь декодировать, действительно содержит что-то.

Я также пытался удалить UTF8 BOM символы с помощью следующей функции PHP

function remove_utf8_bom($text)
{
$bom = pack('H*','EFBBBF');
$text = preg_replace("/^$bom/", '', $text);
return $text;
}

И я также попытался удалить UTF8 BOM персонажи, использующие этот скрипт awk

awk 'NR==1{sub(/^\xef\xbb\xbf/,"")}{print}' INFILE > OUTFILE

Ни один из UTF8 BOM казалось, что абсорбция имела какой-либо эффект.

Ниже приводится описание файла json:

Оригинал JSON, полученный с помощью руководства, указанного выше

0

Решение

Я решил проблему, сначала узнав, какая ошибка отображалась при использовании json_last_error(), Оказалось 5, что является ошибкой UTF8. Это означает, что моя первоначальная мысль о форматировании UTF8 была неверной, но я раньше не исправлял ее должным образом. В конце я просто использовал следующее, чтобы исправить это:

json_decode( preg_replace('/[\x00-\x1F\x80-\xFF]/', '', file_get_contents("items_game.json")), true );

Это в основном просто избавило от всех символов UTF8, которых не должно было быть при попытке декодировать файл.

0

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

Других решений пока нет …

По вопросам рекламы [email protected]