MySQL JSON_OBJECT() 一些字段已经包含 JSON 字符串

MySQL JSON_OBJECT() with some fields already containing JSON String

如何获得 3 列的 JSON_OBJECT(),其中 一些列已经包含 JSON 格式字符串

这是我的示例,其中 info 字段包含一个 json 字符串,因此所有对象都被转义了:

SELECT 
    T1.id, 
    CONCAT(
        '{"elements": [',
        GROUP_CONCAT(
            JSON_OBJECT(
                'type',  T2.`type`,
                'data',  T2.`data`,
                'info',  T2.`info`  <<-- JSON stored string in varchar(100)
            )
        ),
        ']}'
    ) AS `elements`,
FROM `table` T1
INNER JOIN `table2` T2
    ON T1.`id` = T2.`fk_t1_id`
GROUP BY T1.`id`

也许,使用JSON格式的新存储功能会更好,但我还没有测试过。你怎么看?

我找到的最佳解决方案是将 JSON_MERGE() 与 JSON_OBJECT() 和 CONCAT()

结合使用
SELECT 
    T1.id, 
    CONCAT(
        '{"elements": [',
        GROUP_CONCAT(
            JSON_MERGE(
                JSON_OBJECT(
                    'type',  T2.`type`,
                    'data',  T2.`data`
                ),
                CONCAT('{"info": ',  T2.`info`, '}')
            )
        ),
        ']}'
    ) AS `elements`,
FROM `table` T1
INNER JOIN `table2` T2
    ON T1.`id` = T2.`fk_t1_id`
GROUP BY T1.`id`