MySQL 8中SELECT时如何将JSON数组元素包装为对象
MySQL 8 中JSON字段结构转换实现方案
可以实现这种JSON结构的转换,利用MySQL 8提供的JSON函数组合即可完成,以下是具体实现:
假设你的表名为your_table,存储目标JSON的字段名为json_column,执行以下SQL查询就能得到转换后的结构:
SELECT JSON_OBJECT( 'images', JSON_ARRAYAGG( JSON_OBJECT('image', img.element) ) ) AS transformed_json FROM your_table, JSON_TABLE( json_column->'$.images', '$[*]' COLUMNS (element JSON PATH '$') ) AS img GROUP BY your_table.id; -- 替换为你的表主键或唯一标识字段
关键函数说明
- JSON_TABLE:将
images数组拆分为多行记录,每行对应数组中的一个原始url对象,方便逐个处理。 - JSON_OBJECT:将每个原始对象包装到
image键下,构造出目标数组元素的结构。 - JSON_ARRAYAGG:将处理后的单个对象重新聚合为数组,还原成
images对应的数组结构。 - GROUP BY:确保每个原表记录对应生成一条转换后的JSON结果,避免因数组拆分导致的多行输出。
如果你的表中仅有单条记录,或者不需要按记录分组,也可以去掉GROUP BY子句,但保留分组更适配多记录场景。
内容的提问来源于stack exchange,提问作者sergei.sss
相关产品推荐
相关产品推荐

