【问题标题】:Deserializing a JSON data file反序列化 JSON 数据文件
【发布时间】:2018-10-24 18:14:30
【问题描述】:

我正在努力反序列化 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”中的每个项目都已经有一个需要覆盖的宽度和高度值。

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

【问题讨论】:

  • 看起来不像是有效的 JSON。
  • 欢迎来到stackoverflow! :) 首先在这里检查你的 json。 json.parser.online.fr
  • 不管怎样,不清楚你在问什么,请提供输入/所需的输出/你的代码并解释什么不起作用。
  • 抱歉,写得很快,没有为 JSON 使用正确的引号。我编辑了该部分并将更新所需的结果
  • 您确实设置了键... 反序列化器当前是否抛出错误?或者您有困难解析?你已经用 Python 标记了这个问题,那么 Python 代码在哪里?

标签: python json python-2.7


【解决方案1】:
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)

【讨论】:

    【解决方案2】:

    您可以将其保存到变量中并调用它以查看 test1-4

    import json
    json_data = json.dumps({
        "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
                }
            }
        }
    })
    
    json = json.loads(json_data)
    print json["Group"]["Test"]["test4"]
    

    【讨论】:

      猜你喜欢
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 2021-02-26
      • 1970-01-01
      • 1970-01-01
      • 2013-08-17
      • 1970-01-01
      相关资源
      最近更新 更多