我需要从一个JSON格式的文本中获取主键(设备),其中包含大约70.000个(子)键/对象
看起来是这样的:

{
   "1":{...........}
   "4":{...........}
   "9":{...........}
}

我需要得到“1”,“4”和“9”。但是我现在的方法是用大约2分钟的时间来解析文本
json = json.loads(response.text) #this takes so long!
devices = json.keys()

因为我是用树莓皮做的!
有更好的办法吗?
编辑:
我从服务器上运行的JSON API接收数据:
http://.../ZWaveAPI/Run/devices #this is an array

编辑3:
最终工作代码:(运行2-5秒!:)
import ijson.backends.python as ijson
import urllib

parser = ijson.parse(urllib.urlopen("http://.../ZWaveAPI/Run/devices"))
list = []
for prefix,event,value in parser:
    if event == "map_key" and len(prefix) == 0:
        list.append(value)
return list

最佳答案

您可以使用面向流的迭代JSON解析器来完成,但需要单独安装它。尝试ijson,它将为遇到的每个JSON结构发出事件:

for prefix, event, value in parser:
    if event == 'map_key':
        print value

07-24 09:46