代码之家  ›  专栏  ›  技术社区  ›  STORM

如何循环使用JSON项和JSON子项

  •  0
  • STORM  · 技术社区  · 6 年前

    我有以下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"
            }]
    }
    

    我想把所有的 result externalId 键值。

    我试过了

    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"]
    

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

    4 回复  |  直到 6 年前
        1
  •  1
  •   Iker Ocio Zuazo    6 年前

    好 啊。首先,必须在代码开头导入json库。

    如果您想读取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'])
        ...
    

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

        2
  •  1
  •   Ashutosh Chapagain    6 年前
    for i in json_op["result"]:
        print (i["externalId"]) 
    

    这很管用。

        3
  •  1
  •   Mike Scotty    6 年前
    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
    
        4
  •  1
  •   U13-Forward    6 年前

    那为什么不列出理解:

    print([i["externalId"] for i in json_op["result"]])
    

    或要格式化:

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