当前位置:  开发笔记 > 编程语言 > 正文

如何在MySQL中将结果表转换为JSON数组

如何解决《如何在MySQL中将结果表转换为JSON数组》经验,为你挑选了2个好方法。

我想在MySQL中将结果表转换为JSON数组,最好只使用普通的MySQL命令.例如查询

SELECT name, phone FROM person;

| name | phone |
| Jack | 12345 |
| John | 23455 |

预期的JSON输出将是

[
  {
    "name": "Jack",
    "phone": 12345
  },
  {
    "name": "John",
    "phone": 23455
  }
]

有没有办法在普通的MySQL中做到这一点?

编辑:

有一些答案如何使用例如MySQL和PHP,但我找不到纯MySQL解决方案.



1> ronkot..:

在@Schwern的帮助下,我设法提出了这个查询,这似乎有效!

SELECT JSON_ARRAYAGG(JSON_OBJECT('name', name, 'phone', phone)) from Person;


如果你正在使用mysql客户端,[你可以使用`--json`代替](https://dev.mysql.com/doc/refman/5.7/en/mysql-shell-json-output.html)然后它适用于任何查询.
@DarckBlezzer你命题的输出似乎是一个列表集合:`[{"name":"Jack","phone":"12345"}] [{"name":"John","phone":" 23455"}]`(参见[本例](https://paiza.io/projects/nDa_N94y3O2buGkUVvk55g?language=mysql))
@DarckBlezzer代替JSON_ARRAYAGG而不是JSON_ARRAY

2> Schwern..:

您可以使用json_object将行作为JSON对象获取.

SELECT json_object('name', name, 'phone', phone)
FROM person;

这不会将它们放在数组中,也不会在它们之间加上逗号.您必须在获取它们的代码中执行此操作.


@AnthonyKong您使用的是什么版本?json_object只能在5.7及更高版本中使用。
推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有