所以我有一个看起来像这样的JSON:
[
{
"Domain": "apple.com",
"A": [
"17.142.160.59",
"17.172.224.47",
"17.178.96.59"
],
"NS": [
"c.ns.apple.com.",
"b.ns.apple.com.",
"a.ns.apple.com.",
"f.ns.apple.com.",
"nserver5.apple.com.",
"nserver6.apple.com.",
"d.ns.apple.com.",
"e.ns.apple.com."
]
}
]
虽然我可以像viz那样手动检索嵌套信息。
print(data[0]["Domain"]) --- Returns: apple.com
print(data[0]["A"][0]) --- Returns: 17.142.160.59
如何循环查看让我检索域的信息,嵌套的A information, the nested
NS`信息等?
我试过这样做:
for i in data["Domain"]:
print(data[i]["Domain"])
for j in ... // could not figure out, either way first loop fails.
徒劳。谢谢你的帮助!
答案 0 :(得分:1)
您可以这样做:
def get_values(data, scope=None):
for entry in data:
for prop, value in entry.items():
if scope is not None and prop != scope:
continue
if not isinstance(value, list):
yield value
else:
for elem in value:
yield elem
然后:
for value in get_values(data):
print(value)
你也可以:
for value in get_values(data, scope="NS"):
print(value)
答案 1 :(得分:1)
来自JSON的foo
值将成为列表,因此您可以使用data
循环遍历其包含的词典:
for
然后,您只需使用for inner in data:
或inner['Domain']
即可访问与所需密钥相关联的值。要迭代A记录,请在inner['A']
上使用另一个循环。
这里有一组嵌套循环,我认为它可以满足您的需求:
inner['A']
您当然可以对数据执行其他操作,而不是打印数据。