【问题标题】:How to iterate on multi-level JSON in python如何在python中迭代多级JSON
【发布时间】:2017-11-22 12:10:38
【问题描述】:

目标: 遍历子 json,查找特定字符串的 2 个键

在 PHP 中这很容易,但对于 python 3,我似乎找不到合适的方法。我尝试了在网络上找到的其他解决方案,但总是出错。

示例 JSON:

{
  "main1": {
    "sub1": {
      "prop1": "name1",
      "prop2": "name2"
    },
    "sub2": {
      "prop1": "name1",
      "prop2": "name2"
    },
  },
  "main2": {
    "sub1": {
      "prop1": "name1",
      "prop2": "name2"
    },
    "sub2": {
      "prop1": "name1",
      "prop2": "name2"
    },
  },
}

代码

self.data = dataIO.load_json('data/data.json')

for item in self.data['main1'].items():
  if item['prop1'] == 'name1' or item['prop2'] == 'name1':
    print 'found one'

错误: TypeError: string indices must be integers

【问题讨论】:

    标签: json python-3.x loops


    【解决方案1】:

    items() 返回键值元组,所以你要么必须使用 item[1]['prop1']:

    for item in x['main1'].items():
      if item[1]['prop1'] == 'name1' or item[1]['prop2'] == 'name1':
        print 'found one'
    

    或者更好,就是这样:

    self.data = dataIO.load_json('data/data.json')
    
    for key,item in self.data['main1'].items():
      if item['prop1'] == 'name1' or item['prop2'] == 'name1':
        print 'found one'
    

    【讨论】:

    • 我记得我尝试过类似的方法,但它一定不一样,因为它有效。太棒了,我欠你一块饼干! :)(我会在 7 分钟内接受这个答案,不能早点接受)-我举了第二个例子
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-26
    • 2019-02-14
    相关资源
    最近更新 更多