解析字段顺序不同的json对象以进行红移复制

k4aesqcs  于 2023-03-20  发布在  其他
关注(0)|答案(1)|浏览(110)

需要使用Python解析lambda中的JSON对象,以便可以执行Redshift Copy命令并加载数据。
下面是从查询字符串生成的JSON对象的示例,其中排序根据因素而不同。

{"person":..., "address":...,"state":...},
{"person":..., "address":...,"state":...},
{"address":..., "state":...,"person":...},

现在我的问题是我有一些操作来格式化json,使redshift可以接受这个格式,对于每个新的json对象,我需要删除逗号。

{"person":..., "address":...,"state":...}{"address":..., "state":...,"person":...}

处理的逻辑是res = res.replace(',{"person"' , '}{"person"')对于具有不同排序{"address":..., "state":...,"person":...}的对象,使用上述逻辑,这成为一个问题,因为假设{"person"总是第一个不完全为真的字段。
还尝试将json转换为csv,但这会导致数据与列名不一致。

bzzcjhmw

bzzcjhmw1#

如果没有嵌套,则很容易

我的意思是,如果只有{}字符是您所显示的,则replacement命令可以只查找这些字符。

res = res.replace(
    "},{",
    "}{"
)

如果有嵌套,则会更加困难

您不能仅依靠},{来检测是否需要更换。
只要在任何其他级别都找不到此级别的字段名,您就可以尝试以下操作:

field_names = ["person", "address", "state"]
for field_name in field_names:
        res = res.replace(
          '},{"'+field_name+'"',
          '}{"'+field_name+'"',
        )

相关问题