返回一个MySQL结果,结果格式为JSON,行ID作为每个行结果的JSON键

4sup72z8  于 2023-01-25  发布在  Mysql
关注(0)|答案(1)|浏览(113)

查询如下所示:
SELECT JSON_ARRAYAGG(JSON_OBJECT('id', id, 'tag', tag)) from all_tags;
会产生如下结果:

[
    {
        "id": 979,
        "tag": "alternative"
    },
    {
        "id": 947,
        "tag": "ambient"
    }
]

以上这些还可以,但我真正想要的是得到这样一个结果:

[
    979:{
        "tag": "alternative"
    },
    947: {
        "tag": "ambient"
    }
]

只使用mysql就可以做到这一点吗?
我试过SELECT JSON_ARRAYAGG(JSON_OBJECT(id, JSON_OBJECT( 'tag', tag))) from all_tags;
这确实允许我将列嵌套为行id的值,但这实际上没有帮助,因为键仍然嵌套在对象中。
最后我希望在Javacript中使用结果作为一个Map,通过键查找属性。我可以在JS中塑造数据,我只是好奇它是否可以在MySQL中完成

5cg8jx4n

5cg8jx4n1#

你所显示的不是有效的JSON,如果你使用方括号[ ],那么它只是一个数组,而不是一个对象,但是如果你使用key: value,那么它是一个对象,而不是数组。
我认为以下几点更接近你的要求:

SELECT JSON_OBJECTAGG(id, JSON_OBJECT( 'tag', tag)) from all_tags;

相关问题