首页 > 解决方案 > 反序列化 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”中的每个项目已经有一个需要覆盖的宽度和高度值。

我见过的反序列化示例都有设置键。任何帮助,将不胜感激。

标签: pythonjsonpython-2.7

解决方案


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)

推荐阅读