PostgreSQL

关注公众号 jb51net

关闭
首页 > 数据库 > PostgreSQL > PostgreSQL生成JSON字符串

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

作者:一只很酸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字符串内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文