将 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时如何能够保持字段的原有数据类型?
如何将数据从多个输入字段转换为单个 JSON 对象以进一步将其插入单个 mysql 字段