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

 更新时间:2026年05月14日 09:27:56   作者:一只很酸de橘子  
本文介绍了PostgreSQL中将数据转换为JSON字符串的方法,包括单行和多行数据的转换、复杂嵌套JSON的生成以及直接输出纯JSON字符串,所有函数均为PostgreSQL内置,无需安装扩展,需要的朋友可以参考下

接口同步会涉及到增加或减少字段,每次增减都要改代码太麻烦,如果直接通过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数据库中的JSON值

    如何获取PostgreSQL数据库中的JSON值

    这篇文章主要介绍了如何获取PostgreSQL数据库中的JSON值操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • PostgreSQL中enable、disable和validate外键约束的实例

    PostgreSQL中enable、disable和validate外键约束的实例

    这篇文章主要介绍了PostgreSQL中enable、disable和validate外键约束的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • postgresql 循环函数的简单实现操作

    postgresql 循环函数的简单实现操作

    这篇文章主要介绍了postgresql 循环函数的简单实现操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • Navicat设置PostgreSQL数据库的表主键ID自增的方法

    Navicat设置PostgreSQL数据库的表主键ID自增的方法

    这篇文章主要介绍了Navicat设置PostgreSQL数据库的表主键ID自增的方法,文章通过图文结合的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2024-06-06
  • PostgreSQL事务回卷实战案例详析

    PostgreSQL事务回卷实战案例详析

    前段时间在公司小范围做了一个关于PG事务实现的讲座,最后总结了一个摘要性的东西,分享一下,这篇文章主要给大家介绍了关于PostgreSQL事务回卷实战案例的相关资料,需要的朋友可以参考下
    2022-03-03
  • PostgreSQL教程(十):性能提升技巧

    PostgreSQL教程(十):性能提升技巧

    这篇文章主要介绍了PostgreSQL教程(十):性能提升技巧,本文讲解了使用EXPLAIN、批量数据插入、关闭自动提交、使用COPY、 删除索引、删除外键约束等技巧,需要的朋友可以参考下
    2015-05-05
  • docker快速部署postgresql的完整步骤记录

    docker快速部署postgresql的完整步骤记录

    PostgreSQL (pSQL) 是一个功能强大的开源关系型数据库系统,使用 Docker 部署 PostgreSQL 可以快速搭建开发、测试或生产环境,下面这篇文章主要介绍了docker快速部署postgresql的相关资料,需要的朋友可以参考下
    2025-09-09
  • PostgreSQL登陆方式(本地和远程)的实现

    PostgreSQL登陆方式(本地和远程)的实现

    本次分享一下PostgreSQL 的登陆方式,包括本地登录和远程登录,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-11-11
  • 用一整天的时间安装postgreSQL  NTFS权限

    用一整天的时间安装postgreSQL NTFS权限

    看标题貌似一天的收获不小,但实际上是被一个问题搞的要死,啥问题?额,又是NTFS权限的问题。
    2009-08-08
  • PostgreSQL 16 新特性之正态分布随机数函数的示例

    PostgreSQL 16 新特性之正态分布随机数函数的示例

    这篇文章主要介绍了PostgreSQL 16 新特性之正态分布随机数函数,PostgreSQL 16 新增了一个内置的 random_normal() 函数,用于生成这种随机数,通过示例代码给大家介绍的非常详细,需要的朋友可以参考下
    2023-01-01

最新评论