需要帮助调试大量的JSON数据

时间:2010-06-15 17:55:22

标签: php json

我有一个巨大的块,非常大,我无法手动编辑文件,需要读取它并进行正则表达式操作以查看错误。

基本上 - 我的服务器是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个嵌套对象文字。

非常感谢任何见解。

2 个答案:

答案 0 :(得分:1)

您是否尝试过PEAR Services_JSON课程?它可能会给你一个更有用的错误,并且在旧版本的PHP上运行良好。

答案 1 :(得分:0)

我通过JSON格式化程序/验证程序多次运行数据并且它是有效的。数据集太大,甚至使用VIM杀死嵌套对象也是很多工作。

我能够在本地运行这个数据集,因此我将得出结论,这是一个问题,PHP 5.1的嵌套限制为20,它在PHP 5.2和5.3中得到了提升。