适用于Python的Lenient JSON解析器

时间:2019-06-21 06:25:20

标签: python json

是否有适用于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:

我将更新上面的示例以反映我的其他“发现” ...

1 个答案:

答案 0 :(得分:1)

好的,所以@ warl0ck的评论让我认为我最好写自己的“ JSON预处理程序” 进行重型清理。

here it is in my BitBucket Snippet,并完成一个简单的单元测试。

我已经用人为生成的格式错误的JSON文件的语料库对其进行了测试,到目前为止,它似乎仍然可以正常工作...

让我知道其中的代码中是否有错误。

但是暂时我很满足。