python - 反序列化 JSON 数据文件
问题描述
我正在努力反序列化 python 2.7 中的输入数据文件,并且真的不知道从哪里开始。我将输入文件保存为 JSON:
{
"Group": {
"Test": {
"test1": {
"x1": 100,
"y1": 150
},
"test2": {
"x1": 23,
"y1": 56,
"x2": 200,
"y2": 234
},
"test3": {
"x1": 123,
"y1": 456,
"x2": 345,
"y2": 986,
"x3": 234,
"y3": 654
},
"test4": {
"x1": 789,
"y1": 987,
"x2": 345,
"y2": 555,
"x3": 111,
"y3": 222,
"x4": 333,
"y4": 444
}
}
}
}
我正在尝试删除数据,因此如果需要案例“test1”,我可以获取 x1 和 y1 的值并填充一个字段。如果需要 3 对 x 和 y 值,我需要从“test3”中获取值。
我正在尝试在代码中填充以下变量中的字段。它保存为字典,因为最终产品是 JSON 文件。我需要使用上面列出的数据文件中的值填充宽度和高度字段。这是使用 json.dumps 打印出来的变量以提高可读性:
{
"subs": {
"1": {
"video_info": {
"width": x1,
"height": y1
}
},
"2": {
"video_info": {
"width": x2,
"height": y2
}
},
"3": {
"video_info": {
"width": x3,
"height": y3
}
}
}
}
上面的变量是通过从不同的对象(“subs”下的每个字典)中提取数据拼凑而成的,所以我不能从头开始将整个东西写成字典。“subs”中的每个项目已经有一个需要覆盖的宽度和高度值。
我见过的反序列化示例都有设置键。任何帮助,将不胜感激。
解决方案
d={
"Group": {
"Test": {
"test1": {
"x1": 100,
"y1": 150
},
"test2": {
"x1": 23,
"y1": 56,
"x2": 200,
"y2": 234
},
"test3": {
"x1": 123,
"y1": 456,
"x2": 345,
"y2": 986,
"x3": 234,
"y3": 654
},
"test4": {
"x1": 789,
"y1": 987,
"x2": 345,
"y2": 555,
"x3": 111,
"y3": 222,
"x4": 333,
"y4": 444
}
}
}
}
d2={"subs": {}}
for i in range(1,4):
s=str(i)
d2["subs"][s]={}
t=d2["subs"][s]['video_info']={}
t['width']=d['Group']['Test'][f'test{i}'][f'x{s}']
t['height']=d['Group']['Test'][f'test{i}'][f'y{s}']
print(d2)
推荐阅读
- java - 如何在MongoDB聚合Java查询的匹配阶段构造多个AND逻辑?
- javascript - 如何使用键数组中的键和另一个对象数组中的值来构建新对象
- python - Python:如何将概率与给定值相关联?
- jquery - 通过ajax发布复选框值
- java - 无法在项目上执行目标.. 无法读取 IntellJ 中错误的工件描述符
- mysql - 当 NEW.status = true 时,是否可以在其他行设置“状态”为 false?
- edge-detection - Halcon - 找到边缘位置,画线和线交点
- azure - 如何在没有订阅权限的情况下授予对资源组的访问权限以部署服务?
- python - 获取熊猫数据框中多列的表面加权平均值
- c - 在一行中获取多个字符串和整数