无法在php中解码dota项架构json

无法在php中解码dota项架构json,php,json,steam-web-api,Php,Json,Steam Web Api,我最近通过以下指南获得了Dota 2项模式: 由于文件非常大,每次我尝试使用json验证器(如JSONLint)验证它时,它们都会停止响应。它看起来像是正确的json,根据指南,它应该是正确的json。我的问题是,当我在PHP中使用json\u decode()时,它最终返回null或空值 我的猜测是,它包含PHP不支持的某种类型的字符,从而导致它返回null。我读了一些关于UTF8 BOM,但我不确定这是否是问题所在 有人能帮我找出它的毛病吗 我已经使用了var\u dump()来确保我试图解

我最近通过以下指南获得了Dota 2项模式:

由于文件非常大,每次我尝试使用json验证器(如JSONLint)验证它时,它们都会停止响应。它看起来像是正确的json,根据指南,它应该是正确的json。我的问题是,当我在PHP中使用
json\u decode()
时,它最终返回null或空值

我的猜测是,它包含PHP不支持的某种类型的字符,从而导致它返回null。我读了一些关于
UTF8 BOM
,但我不确定这是否是问题所在

有人能帮我找出它的毛病吗

我已经使用了
var\u dump()
来确保我试图解码的对象的内容确实有内容

我还尝试使用以下php函数删除
UTF8 BOM
字符

function remove_utf8_bom($text)
{
     $bom = pack('H*','EFBBBF');
     $text = preg_replace("/^$bom/", '', $text);
     return $text;
}
我还尝试使用这个awk脚本删除
utf8bom
字符

awk 'NR==1{sub(/^\xef\xbb\xbf/,"")}{print}' INFILE > OUTFILE
两次
UTF8 BOM
移除似乎都没有任何效果

以下是讨论中的json文件:


我首先通过使用
json\u last\u error()
找到了显示的错误,从而解决了这个问题。结果是5,这是UTF8错误。这意味着我最初对UTF8格式的想法是不正确的,但我以前并没有正确地修复它。最后,我使用以下方法修复了它:

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

这基本上消除了在尝试解码文件时不应该存在的所有UTF8字符。

请检查您尝试解码的对象中是否包含任何值。使用
var\u dump
function@Sourabh在解码之前,它包含了期望值。然后请把所有这些都放在你的问题中,你有什么,你尝试了什么,这样我们就可以回答它了