我有一个巨大的块,非常大,我无法手动编辑文件,需要读取它并进行正则表达式操作以查看错误。
基本上 - 我的服务器是PHP 5.1.6,我无法更新它。这具有较旧的json_decode
,其功能不如5.2 / 5.3版本。
json_decode
返回NULL并且正在调用json_last_error
但该函数不存在,除了在PHP 5.3中,因此我手动尝试查看错误。
$regex = '#[^0-9"$a-zA-Z{:}().]#';
$json = preg_replace( $regex, '', $json );
$tree = json_decode ( $json, true );
var_dump($tree); // NULL
JSON的片段..位于中间某处
{ “109”:0, “103”:1, “102”:59, “101”:70, “100”:4299, “94”:0, “50”:51, “46”: 0, “45”:0, “44”:0, “43”:0, “42”:0, “23”:0, “22”:0, “18”:0, “17”:1, “16”:1, “13”:160, “8”:4298}}, “2”:{ “d”:{ “109”:0, “103”:92, “102”:54,“101 “:53,” 100 “:4301,” 94 “:0,” 50 “:4278,” 49 “:328,” 46 “:1,” 45 “:0,” 44 “:1,” 43" : 0, “42”:0, “26”:0, “23”:0, “22”:0, “18”:0, “17”:1, “16”:1, “8”:4300}中, “m”:{ “94”:1, “100”:1, “26”:1, “50”:1, “8”:1, “49”:1, “18”:1,“43 “:1,” 42 “:1,” 109 “:1},” C “:{”/ “:{” d “:{” 109 “:0,” 100 “:4301,” 94" :0, “50”:4278, “49”:328, “43”:0, “42”:0, “26”:0, “18”:0, “8”:4300}}, “G”:{” d “:{” 109 “:1,” 100 “:4303,” 94 “:1,” 68 “:17,” 50 “:64,” 49 “:53,” 43 “:1,” 42" : 1, “34”:0, “18”:1, “13”:2216, “11”:0, “8”:4302}}}}, “3”:
}}}}
是可疑的,但这可能只会关闭4个嵌套对象文字。
非常感谢任何见解。
答案 0 :(得分:1)
您是否尝试过PEAR Services_JSON课程?它可能会给你一个更有用的错误,并且在旧版本的PHP上运行良好。
答案 1 :(得分:0)
我通过JSON格式化程序/验证程序多次运行数据并且它是有效的。数据集太大,甚至使用VIM杀死嵌套对象也是很多工作。
我能够在本地运行这个数据集,因此我将得出结论,这是一个问题,PHP 5.1的嵌套限制为20,它在PHP 5.2和5.3中得到了提升。