如何处理大量的JSON词典?

d33*_*tah 6 python json

我有一个包含JSON字典流的文件,如下所示:

{"menu": "a"}{"c": []}{"d": [3, 2]}{"e": "}"}
Run Code Online (Sandbox Code Playgroud)

它还包括嵌套字典,看起来我不能依赖换行符作为分隔符.我需要一个可以像这样使用的解析器:

for d in getobjects(f):
  handle_dict(d)
Run Code Online (Sandbox Code Playgroud)

关键是如果迭代仅发生在根级别,那将是完美的.是否有一个Python解析器可以处理所有JSON的怪癖?我感兴趣的是一个可以处理不适合RAM的文件的解决方案.

Bri*_*ien 5

我认为JSONDecoder.raw_decode可能就是你要找的东西.你可能不得不做一些字符串格式化,以获得完美的格式,取决于换行等等,但通过一些工作,你可能会得到一些工作.看这个例子.

import json
jstring = '{"menu": "a"}{"c": []}{"d": [3, 2]}{"e": "}"}'
substr = jstring
decoder = json.JSONDecoder()

while len(substr) > 0:
    data,index = decoder.raw_decode(substr)
    print data
    substr = substr[index:]
Run Code Online (Sandbox Code Playgroud)

给出输出:

{u'menu': u'a'}
{u'c': []}
{u'd': [3, 2]}
{u'e': u'}'}
Run Code Online (Sandbox Code Playgroud)