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 对象的主要内容,如果未能解决你的问题,请参考以下文章
PHP json_encode将行作为对象而不是数组返回[重复]
MySQL:JSON 列值聚合到按属性分组的单个 JSON 对象中
如何将数据从多个输入字段转换为单个 JSON 对象以进一步将其插入单个 mysql 字段