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

如何在MySQL中实现JSON最小化(去除冗余空格)?

MySQL JSON 紧凑化(JSON_PRETTY 反向操作)

需求说明

MySQL 提供的 JSON_PRETTY() 函数可以将 JSON 格式化为带换行、空格的易读形式,现在需要实现反向操作:将格式化后的 JSON 转换为无冗余空格的紧凑格式,且仅通过 MySQL 内置命令实现,不依赖应用层处理。

解决方案

核心思路是利用 MySQL 对 JSON 类型的解析特性:将带格式的 JSON 字符串转换为 JSON 类型时,MySQL 会自动剔除语法冗余的空格、换行符,再转换回字符串即可得到紧凑格式的 JSON,同时会保留 JSON 值内部的合法空格(比如字符串 "hello world" 中的空格不会被删除)。

场景1:处理 JSON 类型列的格式化结果

如果你的列是原生 JSON 类型,直接查询该列默认返回的就是紧凑格式;若要将 JSON_PRETTY() 的输出转回紧凑格式,可按以下方式查询:

-- 获取格式化后的JSON
SELECT json_pretty(jsonPara) AS formatted_json FROM MY_TABLE;

-- 将格式化结果转换为紧凑格式
SELECT CAST(CAST(json_pretty(jsonPara) AS JSON) AS CHAR) AS minimized_json FROM MY_TABLE;

场景2:处理存储为文本类型的格式化JSON

如果你的 JSON 是存储在 TEXT/VARCHAR 列中的格式化字符串,同样通过类型转换实现紧凑化:

-- formatted_json_col 是存储格式化JSON的文本列
SELECT CAST(formatted_json_col AS JSON) AS minimized_json FROM MY_TABLE;

示例验证

以你提供的测试数据为例:

INSERT INTO MY_TABLE(jsonPara) VALUES ('{"lamp": "hello world", "chair": "5"}');

-- 同时查看原JSON、格式化JSON、紧凑化JSON
SELECT 
  jsonPara AS original_json,
  json_pretty(jsonPara) AS formatted_json,
  CAST(CAST(json_pretty(jsonPara) AS JSON) AS CHAR) AS minimized_json
FROM MY_TABLE;

输出的 minimized_json 即为目标结果:{"lamp":"hello world","chair":"5"}

内容的提问来源于stack exchange,提问作者Ankit Prakash

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 04:15:41