有没有一个“宽松”的JSON解析器用于Python?
我一直收到(手写的)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 < numbers < 1的前导零... -_-
我发现了一个文件里面有这条评论...:fuming_red:
我将更新上面的示例以反映我的额外“发现”...
1条答案
按热度按时间ncecgwcz1#
好吧,所以@warl0ck的评论让我觉得,我可能更好地编写我自己的**“JSON预处理器”**来完成繁重的清理。
所以,here it is in my BitBucket Snippet,完成一个简单的单元测试。
我已经用我的人工生成的格式错误的JSON文件语料库测试了它,到目前为止,它似乎工作得很好……
如果代码有问题就告诉我。
但目前我很满足。
**编辑:**因为BitBucket删除了我所有的代码片段,我重新上传代码到GitHub:https://gist.github.com/pepoluan/361724bfa5cce9d863dadc6e2bdcb8c9的