Python 3 次迭代 json return 对象
Python 3 iterate json return object
我有一个 JSON return 对象,我需要每个行的 'id' 字段编号的值 return.
输出变量(json return对象):
[{'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 return 对象中 return 'id' 的值?
我怀疑 output
将永远是一个list
(因为你在这里使用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))))
我有一个 JSON return 对象,我需要每个行的 'id' 字段编号的值 return.
输出变量(json return对象):
[{'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 return 对象中 return 'id' 的值?
我怀疑 output
将永远是一个list
(因为你在这里使用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))))