无法在php中解码dota项架构json
我最近通过以下指南获得了Dota 2项模式: 由于文件非常大,每次我尝试使用json验证器(如JSONLint)验证它时,它们都会停止响应。它看起来像是正确的json,根据指南,它应该是正确的json。我的问题是,当我在PHP中使用无法在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()来确保我试图解
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在解码之前,它包含了期望值。然后请把所有这些都放在你的问题中,你有什么,你尝试了什么,这样我们就可以回答它了