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结构以使其工作? (假设我无法更改脚本)。
答案 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"
}
}