gpt4 book ai didi

python - 无法使用 ijson 访问顶级元素?

转载 作者:太空宇宙 更新时间:2023-11-04 06:01:00 27 4
gpt4 key购买 nike

我一直在尝试使用 Python 的 ijson 库解析 JSON 文件。这在查看二级元素或使用解析器时有效,但我更喜欢直接查看顶级元素的便利性。

JSON 的基本格式如下:

{"foo":{"a":1,"b":2},"bar":{"c":3,"d":4}}

所以,没什么特别的。我想做的是以每次迭代产生 "foo" 及其值/"bar" 及其值的方式遍历它。 (所以就像我要 json.loads 这个东西一样。)我的代码如下 - 我知道它不会产生两者,我只是在测试:

f=open('test')
i=ijson.items(f,'item')
for j in i:
print j

items() 函数的语法是I got from stackoverflow .

然而,奇怪的是,循环确实需要时间,但实际上并没有输出任何东西。 (即使我在那里放了一个 print 'qyx' 也不行,所以我不知道它在做什么。)如果我修改 items() 函数来解析 foo.item,它确实有效,但我能找到的少量信息表明它也应该适用于顶层。另外,如果我使用以下内容,它会起作用,但它更不透明:

i=ijson.parse(f)
for prefix, event, value in i:
if not prefix or event == 'map_key' or ( '.' in prefix and event in ('start_map','end_map') ):
continue
print prefix, event, value

这会输出

foo start_map None
foo.a number 1
foo.b number 2
foo end_map None
bar start_map None
bar.c number 3
bar.d number 4
bar end_map None

... 可以处理生成 "foo"{"a":1,"b":2} 等,但它更多一个麻烦。

最佳答案

试试这个:

f = open('test')
json_obj = ijson.items(f,'').next() # '' loads everything as only one object.
for (key, value) in json_obj.items():
print key + " -> " + str(value)

关于python - 无法使用 ijson 访问顶级元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25076170/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com