当前位置: 代码网 > it编程>编程语言>Javascript > PostgreSQL生成JSON字符串的方法汇总

PostgreSQL生成JSON字符串的方法汇总

2026年05月14日 Javascript 我要评论
接口同步会涉及到增加或减少字段,每次增减都要改代码太麻烦,如果直接通过pg的函数生成报文json字符串,这样只需要改函数就可以了一、单行数据转 json 对象1.row_to_json:整行转 jso

接口同步会涉及到增加或减少字段,每次增减都要改代码太麻烦,如果直接通过pg的函数生成报文json字符串,这样只需要改函数就可以了

一、单行数据转 json 对象

1.row_to_json:整行转 json

把查询的一行数据直接变成一个 json 对象

-- 示例:用户表单行转 json
select row_to_json(users) from users where id = 1;

结果:

{"id":1,"name":"张三","age":25,"email":"zhangsan@test.com"}

2. json_build_object:自定义键名转 json

手动指定 json 的键 (key)值 (value),灵活可控

-- 自定义键名,只返回需要的字段
select 
  json_build_object(
    'userid', id,
    'username', name,
    'userage', age
  ) as user_json
from users 
where id = 1;

结果:

{"userid":1,"username":"张三","userage":25}

二、多行数据转 json 数组

1.json_agg+ 子查询(标准数组)

把多行结果打包成json 数组字符串

-- 所有用户转 json 数组
select json_agg(users) from users;

-- 只筛选指定字段转数组
select json_agg(
  json_build_object('id',id,'name',name)
) from users where age > 20;

结果:

[{"id":1,"name":"张三"},{"id":2,"name":"李四"}]

2.array_to_json+ 数组(简单数组)

把普通 postgresql 数组转 json 数组

select array_to_json(array[1,2,3,4]);  -- [1,2,3,4]
select array_to_json(array['苹果','香蕉']);  -- ["苹果","香蕉"]

三、拼接复杂嵌套 json

1. 嵌套 json 对象

select json_build_object(
  'code', 200,
  'msg', 'success',
  'data', json_build_object(
    'user', row_to_json(users),
    'createtime', now()
  )
) from users where id = 1;

结果:

{
  "code":200,
  "msg":"success",
  "data":{
    "user":{"id":1,"name":"张三","age":25},
    "createtime":"2025-05-20 10:00:00"
  }
}

2. 嵌套 json 数组

select json_build_object(
  'total', 2,
  'list', json_agg(users)
) from users;

四、直接输出纯 json 字符串(无引号转义)

默认返回的是 json/jsonb 类型,如果你需要纯文本字符串,用 ::text 强转:

-- 输出标准 json 字符串
select row_to_json(users)::text from users where id = 1;

复杂的json数据就需要自己摸索了

所有函数都是 postgresql 内置,无需安装扩展,直接使用

到此这篇关于postgresql生成json字符串的方法汇总的文章就介绍到这了,更多相关postgresql生成json字符串内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com