是否有适用于Python的“宽大” JSON解析器?
我一直在获取这样的(手写)JSON文件:
/* This JSON file is created by someone who does not know JSON
And not competent enough to search about "JSON Validators" */
{
/* Hey look!
A honkin' block comment here!
Yeehaw */
"key1": "value1", // Hey look there's a standard-breaking comment here!
"key3": .65, // I'm too lazy to type "0"
"key4": -.75, // That "other" .Net program works anyways...
"key5": [ 1 /* One */, 2 /* Two */, 3 /* Three */, 4 /* Four */],
"key2": "value2", // Whoopsie, forgot to delete the comma here...
}
实际上消耗了那些格式严重错误的JSON文件的程序 并没有对这些错误进行呕吐。顺便说一下,该程序是使用C#编写的。
我正在用Python编写一些脚本,这些脚本将基于这些JSON文件执行操作,但是由于这些错误,它总是(正确)崩溃。
我可以手动将这些.json文件编辑为符合标准的文件...但是其中有很多文件,因此这太费力了-更不用说我必须继续编辑新收到的JSON文件,
那么,回到我的问题,是否有一个 宽容 JSON解析器可以使用那些格式错误的JSON文件而不会死掉?
注意: This question仅关注最后一个对象的结尾逗号;它不处理块注释和/或内联注释。
编辑:什么……我刚刚收到一个JSON文件,创建者决定在其中删除0 <数字<1 ... -_-
的前导零。然后我发现一个嵌入注释的文件...:fuming_red:
我将更新上面的示例以反映我的其他“发现” ...
答案 0 :(得分:1)
好的,所以@ warl0ck的评论让我认为我最好写自己的“ JSON预处理程序” 进行重型清理。
here it is in my BitBucket Snippet,并完成一个简单的单元测试。
我已经用人为生成的格式错误的JSON文件的语料库对其进行了测试,到目前为止,它似乎仍然可以正常工作...
让我知道其中的代码中是否有错误。
但是暂时我很满足。