是否有适用于 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 文件,呃。
所以,回到我的问题,是否有一个lenient JSON 解析器可以在不死机的情况下使用那些格式错误的 JSON 文件?
注意: This question只关注最后一个对象的尾随逗号;它不处理 block 注释和/或内联注释。
编辑: 什么...我刚刚收到一个 JSON 文件,其中创建者决定删除 0 < numbers < 1 ... 的前导零 ... -_-
然后我发现了一个嵌入评论的文件...:fuming_red:
我将更新上面的示例以反射(reflect)我的额外“发现”...
最佳答案
好吧,@warl0ck 的评论让我觉得我最好还是编写自己的“JSON 预处理器” 来进行繁重的清理工作。
所以,here it is in my BitBucket Snippet ,完成一个简单的单元测试。
我已经用我的人为生成的格式错误的 JSON 文件语料库对其进行了测试,到目前为止它似乎运行良好...
如果代码中有错误,请告诉我。
但就目前而言,我很满足。
关于python - 用于 Python 的 Lenient JSON 解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56697942/