使用Postgres解析字符串化的JSON对象

时间:2016-09-21 11:45:00

标签: sql json postgresql

我一直在使用Postgres将JSON对象存储为字符串,现在我想利用PG的内置jsonjsonb类型来更有效地存储对象

基本上,我想解析字符串化的JSON并将其放在PG内的json列中,而不必诉诸于将所有值读入Python并在那里解析它们。

理想情况下,我的迁移应该如下所示:

UPDATE table_name SET json_column=parse_json(string_column);

我看了Postgres's JSON functions,似乎并没有这样做的方法,即使它看起来很微不足道。为了记录,我的JSON对象只是一维的字符串数组。

有没有办法做到这一点?

1 个答案:

答案 0 :(得分:4)

不需要parse_json列,只需更改列的类型:

ALTER TABLE table_name
ALTER COLUMN json_column TYPE json USING json_column::json;

请注意,如果您计划对这些值执行大量JSON操作(即从对象中提取元素,修改对象等),最好使用jsonbjson只应用于存储JSON数据。此外,正如Laurenz Albe指出的那样,如果您不需要对这些值执行任何JSON操作,并且您对postgresql可以对它们执行的验证不感兴趣(例如,因为您相信源始终提供有效的JSON ),然后使用text是一个完全有效的选项(或bytea)。