json格式的嵌套对象结构

时间:2018-03-26 15:12:29

标签: python json

json结构

{
    "categories": [{
        "supercategory": "Bottle",
        "id": 1,
        "name": "Bottle"
    },
    {
        "supercategory": "Car",
        "id": 2,
        "name": "Car"
    }]
}

由以下python脚本读取:

with open('file.json') as json_data:
    json_info = json.load(json_data)

稍后,同一脚本会尝试以下列方式访问数据结构:

json_info['1']['name']
json_info['2']['name']

数字指的是" id" json结构中的字段。由于该代码显然与json结构不一致:我如何更改json结构以使其工作? (假设我无法更改脚本)。

3 个答案:

答案 0 :(得分:6)

为了让你的代码有效,你需要这样的东西:

json_info = {
     "1": {"supercategory": "Bottle",
           "name": "Bottle"},
     "2": {"supercategory": "Car",
           "name": "Car"}
     }

答案 1 :(得分:3)

我认为你正在寻找的是这样的:

{
    "1": {
        "supercategory": "Bottle",
        "id": 1,
        "name": "Bottle"
    },
    "2": {
        "supercategory": "Car",
        "id": 2,
        "name": "Car"
    }
}

答案 2 :(得分:0)

第一,我强烈建议每当访问Python中的字典时都使用'get'方法。它隐式处理给定键无效的情况,并通过返回null(或默认值)来防止错误。有关详细信息,请参阅此link。因此代码将重写为json_info.get('1',{}).get('name')。注意第一个get中的默认空字典 - 这是为了避免None类型错误。 其次,如果您的意思是通过ID STRING(而不是int)访问对象,那么您的JSON数据结构将是:

{
  "1": {
    "supercategory": "Bottle",
    "name": "Bottle"
  },
  "2": {
    "supercategory": "Car",
    "name": "Car"
  }
}