PostgreSQL生成JSON字符串的方法汇总
接口同步会涉及到增加或减少字段,每次增减都要改代码太麻烦,如果直接通过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字符串内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
PostgreSQL中enable、disable和validate外键约束的实例
这篇文章主要介绍了PostgreSQL中enable、disable和validate外键约束的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2021-01-01
Navicat设置PostgreSQL数据库的表主键ID自增的方法
这篇文章主要介绍了Navicat设置PostgreSQL数据库的表主键ID自增的方法,文章通过图文结合的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2024-06-06
PostgreSQL 16 新特性之正态分布随机数函数的示例
这篇文章主要介绍了PostgreSQL 16 新特性之正态分布随机数函数,PostgreSQL 16 新增了一个内置的 random_normal() 函数,用于生成这种随机数,通过示例代码给大家介绍的非常详细,需要的朋友可以参考下2023-01-01


最新评论