MySql 将行放入单个 JSON 对象

Posted

技术标签:

【中文标题】MySql 将行放入单个 JSON 对象【英文标题】:MySql get rows into single JSON object 【发布时间】:2020-03-20 21:28:45 【问题描述】:

我有桌子:

 -------+-------
| param | value |
|-------+-------|
|     A |  200.5|
|     B |   70.2|
 ---------------

当我执行时:

select json_object(`param`, `value`) from `table`

我明白了:

"A": "200.5"
"B": "70.2"

但我想要这个:


 "A": "200.5",
 "B": "70.2"

【问题讨论】:

【参考方案1】:

您可以使用json aggregate function json_objectagg(),自 mysql 5.7 起可用:

select json_objectagg(param, value) js from mytable

Demo on DB Fiddle

| js | | :------------------------ | | “A”:200.5,“B”:70.2 |

在早期版本中,json 聚合函数不可用,您可以进行字符串连接:

select concat('', group_concat('"', param, '": ', value separator ', '), '') js
from mytable

Demo on DB Fiddle

【讨论】:

再次感谢GMB,但我使用的服务器是5.5 ;-( @iMarh:我用早期版本的解决方案更新了我的答案。【参考方案2】:

我假设您不想直接从 MySQL 服务器获取此结果,如果是这种情况,最接近答案的是 How to convert result table to JSON array in MySQL。

如果您对进一步获取结果感到满意,您始终可以使用您选择的语言对其进行解析。

希望对您有所帮助。

【讨论】:

以上是关于MySql 将行放入单个 JSON 对象的主要内容,如果未能解决你的问题,请参考以下文章

Gson:将多个json对象映射到单个对象

PHP json_encode将行作为对象而不是数组返回[重复]

MySQL:JSON 列值聚合到按属性分组的单个 JSON 对象中

如何将数据从多个输入字段转换为单个 JSON 对象以进一步将其插入单个 mysql 字段

我需要在将对象放入 MySql 之前对其进行序列化吗? [复制]

使用 SQLAlchemy 从 PostgreSQL 行对象中获取单个值