将 MySql 表导出为 JSON 对象

Posted

技术标签:

【中文标题】将 MySql 表导出为 JSON 对象【英文标题】:Exporting MySql table into JSON Object 【发布时间】:2020-10-06 03:01:52 【问题描述】:

如何将我的mysql表结果转换为数据库级别的json对象

例如,

SELECT json_array(
         group_concat(json_object( name, email))
FROM ....

它将产生结果为

[ 
    
     "name": "something",
     "email": "someone@somewhere.net"
    , 
    
     "name": "someone",
     "email": "something@someplace.com"
    

]

但我需要的是我需要给出自己的查询,其中可能包含函数、子查询等。

就像在 postgres select row_to_json(select name,email,getcode(branch) from .....) 中一样,我将得到整个结果作为 json 对象

在mysql中是否有可能这样做?

select jsonArray(select name,email,getcode(branch) from .....) 

【问题讨论】:

为什么要标记 3 个不同的 MySQL 版本和 MariaDB?请仅标记您正在使用的一个数据库/版本。 @GMB 我需要支持所有这些版本,我知道 mysql 低版本不支持 Json @GMB 你对此有什么想法吗,我们如何在 My Sql 中实现这一点 显示需要转换为 JSON 的复杂查询示例。这太笼统了,没有具体细节。 @underscore_d 首先感谢您考虑我的问题。不需要复杂的查询和所有。仅用于简单查询本身,例如我有一个名为 department 的表,它具有 depid、deptname、salr 等。在下面的示例中,我需要提及该 json_object中的列的名称> 函数不提及列我可以给出动态查询,例如::从部门中选择部门名称、部门名称,例如 2 :::选择部门名称,光标(选择薪水,佣金_pct FROM 员工 e WHERE e.department_id = d.department_id) FROM部门d; 【参考方案1】:

我只在官方 Mysql 8 和 5.7 文档中发现它支持转换为 JSON 类型。它包括 MySQL 8 和 5.7 中的 JSON_ARRAY 函数,以及 MySQL 8 中的 JSON_ARRAYAGG 函数。请参阅完整的 JSON 函数参考here。

这意味着不存在一个简单的mysql内置解决方案。

幸运的是,我们的同事发起了类似的讨论here。也许你可以在那里找到你的解决方案。

对于一个搜索定义明确的属性 JSON 转换,解决方案是 here。

【讨论】:

谢谢,但这就是我已经提到的问题,我可以生成这样的 json,但我需要在 json_object 函数中提及特定的列名,但是我的要求是我的查询是标准 SQL 格式,并且它是动态的,例如 select deptid,depname, getDepCode(depcode) from department。这就是为什么我在 postgres sql 中提到如果我们将 sql 查询传递给 row_to_json() 函数,它会将结果表转换为 json_array 对不起。让我更准确地看一下:我在官方文档中发现的只是mysql本身只支持这种功能:dev.mysql.com/doc/refman/8.0/en/json-function-reference.html。这意味着不存在像 Postgres 支持的 MySQL 轻易的原生支持。我将更准确地编辑问题。并将指出关于 *** 和 StackExchange 的其他讨论。 谢谢@Erme Schultz,您对此有什么想法吗***.com/q/62344730/9066195 对不起,我对这个问题了解不多。

以上是关于将 MySql 表导出为 JSON 对象的主要内容,如果未能解决你的问题,请参考以下文章

查询Mysql表之后将结果转换为json时如何能够保持字段的原有数据类型?

Postman 从控制台导出 JSON 对象

将 JSON 数据从 MySQL 表导出到 CSV

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

如何在 Angular 中将动态 JSON 对象数组导出为 CSV?

如何导出数据库文件?