我编写了一个plpgsql脚本,它在字符串中生成一个json对象数组但是在使用to_json()方法将带有该字符串的变量传递给它之后,它返回一个双引号的结果,并且每个双引号字符都是逃过一劫。但我需要那个字符串。
jsonResult变量的初始内容是:
[{ “键”:{04949429911, “代码”: “400”}, “值”: “20000.00”},{ “键”:{ “InsuranceNumber”: “04949429911”, “代码”:“403 “},” 值 “:” 10000.00" },...]
但在to_json()之后它看起来像这样:
“[{\” 键\ “:{04949429911,\” 代码\ “:\” 400 \ “},\” 值\ “:\” 20000.00 \ “},{\” 键\“:{\ “InsuranceNumber \”:\ “04949429911 \”,\ “代码\”:\ “403 \”},\ “值\”:\ “10000.00 \”} ...]“
这是存储在jsonResult中的所有内容破坏的地方:
UPDATE factor_value SET params = to_json(jsonResult) WHERE id = _id;
我做错了什么?
答案 0 :(得分:4)
This answer指出只需投放到json
即可:
UPDATE factor_value SET params = jsonResult::json WHERE id = _id;
您看到的奇怪逃避可能是由于postgresql没有意识到您已经拥有有效的JSON,而您的varchar
只是转换为普通的javascript / JSON字符串。
答案 1 :(得分:1)
我需要将bytea列转换为jsonb,使用to_json时遇到转义字符。我还使用了bytea_data_column :: jsonb和postgres说不能转换为jsonb。这是我的解决方法:
bytea_data_column::text::jsonb