我有一个包含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的文件的解决方案.
我认为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)