Python 3迭代json返回对象

标签 python json api iteration xml-rpc

我有一个 JSON 返回对象,我需要每行返回的“id”字段号中的值。

输出变量(json返回对象):

[{'public_key': '21A8CAEEDC0B5A0A88657C796089D9CF83BC057B', 'flags': 256, 'algorithm': 8, 'digest': 'C0B0483159C3C2B0616BC27AC12D251BF30DFBF5E2B2A6D2DE964A3BAAC68564', 'id': 28105, 'digest_type': 2, 'keytag': 57881, 'date_created': <DateTime '20150620T01:49:46' at 805f34518>}, {'public_key': '406F0435E626AD582D4A403A9AB5E52F86CC3D15', 'flags': 256, 'algorithm': 8, 'digest': 'D06634258CCD3DD7BA8F7796828A6B4DFE142F01C964D851B9FAFE3D9CC7C712', 'id': 28141, 'digest_type': 2, 'keytag': 60608, 'date_created': <DateTime '20150621T01:44:55' at 805f34630>}]

我已加载 JSON 库,但 python 不喜欢我的格式

错误:

Traceback (most recent call last):
  File "makecustdomain.py", line 262, in <module>
    json_object = json.load(output)
  File "/usr/local/lib/python3.4/json/__init__.py", line 265, in load
    return loads(fp.read(),
AttributeError: 'list' object has no attribute 'read'

代码:

    domain = 'domain2.com'
    api = client.ServerProxy('https://rpc.gandi.net/xmlrpc/')
    apikey = 'privateKey'
    output = api.domain.dnssec.list(apikey, domain)
    json_object = json.load(output)
    for id in json_object[7]:
            print(id)

预期输出:

28105
28141

如何从 JSON 返回对象返回“id”的值?

最佳答案

怀疑输出将始终是列表(因为您在这里使用RPC,并且RPC通常将结果序列化为本地类型),所以你必须这样做:

from pprint import pprint
from operator import itemgetter

output = api.domain.dnssec.list(apikey, domain)
ids = map(itemgetter("id"), output)
pprint(ids)

更新:如果 ID 列表返回为 ["123 456", "789"],您和您想要一个扁平化的 ID 列表,您可以做类似的事情:

ids = list(chain(*map(str.split, map(itemgetter("id"), output))))

关于Python 3迭代json返回对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30960107/

相关文章:

python - 在Python中删除列表中的项目

python - Fabric 可以使用 telnet 来执行 run() 命令吗?

python - 在列表列表中查找索引和总和

javascript - Node.JS 无效 URI 错误 : GET Request using Query parameter

Php 不能使用对象 stdClass 作为数组

php - 从访问 token 获取 Facebook 用户(PHP SDK 3.0.1)

python - Numpy 中的多维索引

javascript - json 数据在服务器上不起作用

javascript - TypeError : this. state.users.map 不是函数 reactjs

python - 使用 Python API 在 Smartsheet 中复制工作表