sql - 将表转换为带有长文本列的 JSON 数组
问题描述
我正在使用 mariaDB 10.3,我有一个表:
CREATE TABLE user(id INT NOT NULL AUTO_INCREMENT, name VARCHAR(100) NOT NULL, parameters longtext, PRIMARY KEY(id));
有行:
INSERT INTO user VALUES (1, 'name1', '{"number": 1, "text": "some text"}'), (2, 'name2', '{"number": 2, "text": "some more text"}');
我正在尝试编写将表作为JSON
对象返回的查询。到目前为止我有
SELECT CONCAT(
'[',
GROUP_CONCAT(JSON_OBJECT('id',id,'name',name,'parameters', parameters)),
']'
)
FROM user;
但这会返回:
[
{"id": 1,
"name": "name1",
"parameters": "{\"number\": 1, \"text\": \"some text\"}"
},
{
"id": 2,
"name": "name2",
"parameters": "{\"number\": 2, \"text\": \"some more text\"}"
}
]
这不是一个正确的 JSON。我应该改变什么以获得parameters
正确的格式?
我想得到的是:
[
{
"id": 1,
"name": "name1",
"parameters": {
"number": 1,
"text": "some text"
}
},
{
"id": 2,
"name": "name2",
"parameters": {
"number": 2,
"text": "some more text"
}
}
]
谢谢
解决方案
仅JSON_COMPACT
适用于 MariaDB 且在 MySQL 中不存在的函数可以应用于该parameters
列
SELECT CONCAT(
'[',
GROUP_CONCAT(JSON_OBJECT('id',id,
'name',name,'parameters',
JSON_COMPACT(parameters))),
']'
) AS "JSON Value"
FROM user
推荐阅读
- aggregate - R functions re-usability
- soap - Apache Camel 调用 SOAP 服务
- http - 如何在不停止的情况下导出 tshark 对象
- mysql - MYSQL (Mac) - 无法连接,服务器可能没有运行
- swift - 如何防止在状态更改swiftUI中刷新其他视图
- python - 有人能解释一下这段代码片段中 ResNet50 的负责人是如何变化的吗?
- javascript - Javascript:为玩家分配随机角色的百分比
- r - 从 R 中的 rle() 计算连续天数的第一次出现
- python - Python 开始:不知道如何告诉用户他们的数字是奇数还是偶数(对于 5 个数字)
- vpn - ipsec 隧道 - iptables 伪装间歇性工作