【问题标题】:How to address multidimensional json array in Python如何在 Python 中处理多维 json 数组
【发布时间】:2018-05-23 14:19:34
【问题描述】:

我从 Python 脚本中的查询收到以下上下文(示例):

{ “活跃”:假, “所有者”:“用户1”, “内容”: [ { “记录类型”:“测试”, “记录”: [ { “id”:“1”, "日期": "2017 年 11 月 30 日 12:00:00 AM", "链接": "http://localhost", “大小”:1234, }, { “id”:“3”, "日期": "2017 年 11 月 21 日 06:00:00 AM", "链接": "http://localhost", “大小”:3241, }] } ] }

将其转换为 json 数组可以正常工作:

data = json.loads(*string_above*)

因此,这可以正常工作:

print data["owner"]

用户1

这也没关系:

print data["content"]

[ { “记录类型”:“测试”, “记录”: [ { “id”:“1”, "日期": "2017 年 11 月 30 日 12:00:00 AM", "链接": "http://localhost", “大小”:1234, }, { “id”:“3”, "日期": "2017 年 11 月 21 日 06:00:00 AM", "链接": "http://localhost", “大小”:3241, } ]}

现在我的问题是我怎样才能使它成为一个多维数组?

例如命令

print data["content"]["record"]

给出一个错误:

TypeError: 列表索引必须是整数,而不是 str

我希望得到的是:

{ “id”:“1”, "日期": "2017 年 11 月 30 日 12:00:00 AM", "链接": "http://localhost", “大小”:1234, }, { “id”:“3”, "日期": "2017 年 11 月 21 日 06:00:00 AM", "链接": "http://localhost", “大小”:3241, }

在 Google 的此类问题上发现了许多不同的 cmets,但没有简单的解决方案 - 我错过了什么?

【问题讨论】:

    标签: python json multidimensional-array


    【解决方案1】:

    我认为你很困惑。让我们解决这个问题。您返回的初始对象是 dict 而不是数组(在 Python 中是 list)。

    d = { "active": False, "owner": "user1", "content": [ { "recordType": "test", "record": [ { ": id": "1", "date": "Nov 30, 2017 12:00:00 AM", "link": "http://localhost", "Size": 1234, }, { "id": "3", "date": "Nov 21, 2017 06:00:00 AM", "link": "http://localhost", "Size": 3241, } ] } ] }
    isinstance(d, dict)
    # True
    

    你从d 得到的东西是list

    isinstance(data["content"], list)
    # True
    

    需要使用int 引用其元素。因此,要获得data['content'] 的第一个元素,即dict,您可以这样做

    c0 = data['content'][0]
    isinstance(c0, dict)
    # True
    

    【讨论】:

      【解决方案2】:

      简单的答案 - data["content"] 是一个带有一个元素的 list。你可以使用

      print data["content"][0]["record"]
      

      您可以使用在线 json fromatters(例如 this)来探索您的 json 数据。

      【讨论】:

      • 谢谢,我可以理解并同意 n8sty 以及困惑:)
      猜你喜欢
      • 2021-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-07
      • 1970-01-01
      • 1970-01-01
      • 2014-09-27
      • 1970-01-01
      相关资源
      最近更新 更多