Python 如何循环浏览JSON项和JSON子项

Python 如何循环浏览JSON项和JSON子项,python,arrays,json,Python,Arrays,Json,我有以下JSON输入 { "requestId": "453sdafwa234", "result": [ { "seq": 0, "GUID": "081119bd-63a8-42ca-85de-5b4761234955", "amount": 1234, "externalId": "1234567890", "Status": "OK"

我有以下JSON输入

{
    "requestId": "453sdafwa234",
    "result": [
        {
            "seq": 0,
            "GUID": "081119bd-63a8-42ca-85de-5b4761234955",
            "amount": 1234,
            "externalId": "1234567890",
            "Status": "OK"
        },
        {
            "seq": 1,
            "GUID": "011119bd-42ca-63a8-85de-5b47111a8955",
            "amount": 5678,
            "externalId": "2345678901",
            "Status": "OK"
        }]
}
我想循环遍历所有
结果
,然后输出
外部ID
键值

我试过了

json_op = json.loads(json_string)

for op in json_op:
    for r in op["result"]:
      print r["externalId"]
这是行不通的

我也试过了

json_op = json.loads(json_string)

for op in json_op:
    r.get["result"].get["externalId"]

但这也不起作用。正确的方法是什么?

好的。首先,必须在代码开始时导入json库

然后,您没有正确地迭代dictionary对象

如果您想读取requestId密钥,只需编写

print(json_op['requestId'])
对于迭代结果:

json_op = json.loads(s)

print(json_op['requestId'])

for res in json_op['result']:
    print(res['seq'])
    print(res['GUID'])
    print(res['amount'])
    ...

试着告诉我一些事情。我现在无法运行代码。

好的。首先,必须在代码开始时导入json库

for i in json_op["result"]:
    print (i["externalId"]) 
然后,您没有正确地迭代dictionary对象

如果您想读取requestId密钥,只需编写

print(json_op['requestId'])
对于迭代结果:

json_op = json.loads(s)

print(json_op['requestId'])

for res in json_op['result']:
    print(res['seq'])
    print(res['GUID'])
    print(res['amount'])
    ...
试着告诉我一些事情。我现在无法运行代码

for i in json_op["result"]:
    print (i["externalId"]) 
这很有效

import json

s = """{
    "requestId": "453sdafwa234",
    "result": [
        {
            "seq": 0,
            "GUID": "081119bd-63a8-42ca-85de-5b4761234955",
            "amount": 1234,
            "externalId": "1234567890",
            "Status": "OK"
        },
        {
            "seq": 1,
            "GUID": "011119bd-42ca-63a8-85de-5b47111a8955",
            "amount": 5678,
            "externalId": "2345678901",
            "Status": "OK"
        }]
}"""

json_op = json.loads(s)

for item in json_op['result']:
    print(item['externalId'])
这很有效

import json

s = """{
    "requestId": "453sdafwa234",
    "result": [
        {
            "seq": 0,
            "GUID": "081119bd-63a8-42ca-85de-5b4761234955",
            "amount": 1234,
            "externalId": "1234567890",
            "Status": "OK"
        },
        {
            "seq": 1,
            "GUID": "011119bd-42ca-63a8-85de-5b47111a8955",
            "amount": 5678,
            "externalId": "2345678901",
            "Status": "OK"
        }]
}"""

json_op = json.loads(s)

for item in json_op['result']:
    print(item['externalId'])
输出:

1234567890
2345678901
输出:

1234567890
2345678901

那么为什么不列出理解:

print([i["externalId"] for i in json_op["result"]])
或要格式化:

print('\n'.join([i["externalId"] for i in json_op["result"]]))

那么为什么不列出理解:

print([i["externalId"] for i in json_op["result"]])
或要格式化:

print('\n'.join([i["externalId"] for i in json_op["result"]]))

您的
json
有重复的键,一旦您将其作为
dict
加载到python中,只保留最后一个(
result
)。抱歉,我已经更正了它。对于s['result']中的数据:打印(data['externalId')。。s是使用
json.loads()
解析的json字符串的JSONONONCE,您拥有的是一个普通的python dict(其中一个键映射到python dict的python列表)。事实上,它是由json字符串构建的,这完全无关,它只是简单的python dict和list,这两种类型都有很好的文档记录。您的
json
有重复的键,一旦您将其作为
dict
加载到python中,则只保留最后一个(
result
)。对不起,我已经更正了它。对于s['result'中的数据:打印(数据['externalId'])。。s是使用
json.loads()
解析的json字符串的JSONONONCE,您拥有的是一个普通的python dict(其中一个键映射到python dict的python列表)。事实上,它是从json字符串构建的,这完全无关,它只是简单的python dict和list,这两种类型都有很好的文档记录。