You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL中如何将JSON列内的JSON字符串转为合法JSON对象?

解决JSON列中带引号转义字符串转为合法JSON对象的问题

你的问题出在:虽然列类型是JSON,但里面存的是被引号包裹、带转义符的字符串形式JSON,to_json()函数仅负责将输入值转换为JSON类型,不会解析这个字符串内部的结构,所以执行后值不会变化。

正确的处理步骤:

  • 先验证转换结果(避免直接更新出错):

    SELECT your_column::text::json FROM your_table LIMIT 5;
    

    执行后如果返回不带引号和转义符的合法JSON对象(比如{"a":1,"b":2,"c":3}),就可以继续下一步。

  • 执行更新语句:

    UPDATE your_table SET your_column = your_column::text::json;
    

如果你的列是JSONB类型,把语句里的json替换为jsonb即可:

UPDATE your_table SET your_column = your_column::text::jsonb;

原理:your_column::text会把JSON列中存储的带转义的字符串提取为纯文本,再通过::json(或::jsonb)将该文本解析为真正的JSON对象,自动去除外层引号和内部转义符。


内容的提问来源于stack exchange,提问作者Alexander Hörl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 13:25:22