【问题标题】:How to loop through JSON items and JSON subitems如何遍历 JSON 项和 JSON 子项
【发布时间】:2018-10-11 08:31:20
【问题描述】:

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

但这也没有用。什么是正确的方法?

【问题讨论】:

  • 你的json 有重复的键,一旦你把它作为dict 加载到python 中,只保留最后一个(result)。
  • 对不起,我已经更正了。
  • 对于 s['result'] 中的数据: print(data['externalId']).. s 是 json
  • 一旦使用json.loads()解析了json字符串,你所拥有的是一个普通的python dict(其中一个键映射到python dicts的python列表)。它是从 json 字符串构建的这一事实完全无关紧要,它只是普通的 python 字典和列表,这两种类型都有很好的文档记录。

标签: python arrays json


【解决方案1】:

好的。首先,您必须在代码的开头导入 json lib。

那么,您没有正确地迭代您的字典对象。

如果您想读取您的 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】:
    for i in json_op["result"]:
        print (i["externalId"]) 
    

    这行得通。

    【讨论】:

      【解决方案3】:
      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】:

        那为什么不列出理解:

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

        或者想要格式化:

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

        【讨论】:

          猜你喜欢
          • 2019-04-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-01-10
          • 1970-01-01
          • 2015-09-26
          • 2019-10-01
          • 2018-11-21
          相关资源
          最近更新 更多