Python 通过索引获取 JSON 对象

Python get JSON object by index

我有一个 JSON 文件,看起来像这样:

{ data:
      { 123:

      { 212:

      { 343: 

在 python 中,我使用 json.loads(r.text) 加载 JSON。不保证数据对象中的字符串就是这些字符串,但可以是任意数字。我想要做的是能够获得这些数字,这样我就可以将它们存储在一个数组中。在此示例中,我希望数组看起来像 [123,212,343]。因为它们是嵌套对象而不是 JSON 数组,所以无论如何都要这样做吗?

谢谢

非常简短:

#!/usr/bin/env python

import json

foo = json.loads('{"123": null, "234": null, "456": null}')
print map(int, foo.keys())

列表 foo.keys() 的顺序与 JSON 对象(或其字符串表示)中的顺序不同。

如果您需要保留顺序,您可以尝试以下修改:

#!/usr/bin/env python

import json, collections

foo = json.loads('{"123": null, "234": null, "456": null}', object_pairs_hook=collections.OrderedDict)
print map(int, foo.keys())

当您遍历键列表时,您可以按照通常的方式对单个键进行反向查找。

请注意,您可能希望使用 str() 将整数键转换回 Python 字符串,以便检索其关联值。但是,如果您只需要用于查找的键列表,而您并不真正需要实际的整数值,则可以跳过初始 map 调用,只将键保留为字符串。