python - 将json列表转换为字符串
问题描述
我有一个这样的 json,取自 vgg 图像注释器。
"5213c8b86f225.image.jpg40172": {
"filename": "5213c8b86f225.image.jpg",
"regions": [{(...)},
{(...)}]
}
我想将此 json 转换为掩码 rcnn 的格式,如下所示:
"5213c8b86f225.image.jpg40172":{
"filename":"24631331976_defa3bb61f_k.jpg",
"regions":{
"0":{(...)},
"1":{(...)},
(...)}
}
我尝试了以下代码:
with open(val_json, 'r+') as f:
vgg_json = json.load(f)
mask_json =vgg_json
for key in vgg_json:
i=0
for shape_attr in vgg_json[key]['regions']:
mask_json[key]['regions'][str(i)]=shape_attr
i+=1
f.seek(0)
json.dump(mask_json, f, indent=4)
f.truncate()
它不起作用并给我以下错误:
TypeError: list indices must be integers or slices, not str
整个 json 文件在这里: https ://github.com/fabioaraujopt/maskrcnn_custom/blob/master/via_region_data.json
抱歉,“嘿”只是我的测试没有意识到!真正的价值现在改变了!
解决方案
您需要复制每个子字典,但regions
用字典替换
with open(val_json) as f:
vgg_json = json.load(f)
mask_json = {
k: dict(v, regions=dict(enumerate(v['regions']))
for k, v in vgg_json.items()
}
with open(val_json, 'w') as f:
json.dump(mask_json, f, indent=4)
推荐阅读
- javascript - 在 ASP MVC .Net Core 中哪里使用/放置 jQuery?
- python - 计算一个类别代表的百分比
- android - Android,模态底部工作表对话框,高度
- python - 使用 model.fit() 和 validation_split 后获取训练/测试数据
- mongodb - 停止 MongoShell 打印变量赋值
- c# - 让 ReSharper/Roslyn/Compiler 识别 JsonRequiredAttribute
- sql - Oracle SQL - 每月统计一个站点在结果中出现的次数
- r - 在 dplyr 中自动重新排序因子级别
- python - 返回子字符串的列表索引的函数
- postgresql - PostgreSQL 我可以创建密码过期的用户吗?