mysql JSON_ARRAY 后内容没有包含双引号问题

原创
2024/10/22 09:29
阅读数 25

在MySQL中,JSON_ARRAY 函数用于创建一个JSON数组。如果你在使用 JSON_ARRAY 后发现内容没有包含双引号,这可能是因为你直接将非字符串类型的数据作为参数传递给了 JSON_ARRAY

JSON_ARRAY 期望的是一系列的JSON值,这些值可以是字符串、数字、true、false、null或其他JSON数组。如果传递非字符串类型的数据,MySQL会将其转换为对应的JSON类型,通常不会自动添加双引号。

例如,如果你有一个整数列 id,你直接将其传递给 JSON_ARRAY,你会得到类似 [1, 2, 3] 的结果,而不是 ["1", "2", "3"]

解决方法:

  1. 如果你需要得到包含双引号的JSON字符串,你应该先将非字符串类型的数据转换为字符串,可以使用 CAST  CONCAT 函数。

    SELECT JSON_ARRAY(CAST(id AS CHAR)) FROM your_table;

    或者

    SELECT JSON_ARRAY(CONCAT('"', id, '"')) FROM your_table;

     

    另一种方法是使用 JSON_OBJECTAGG 或其他JSON相关的函数来创建期望的JSON格式。

    例如,如果你想要得到类似 ["id": "1"] 这样的结果,你可以这样做:

    SELECT JSON_OBJECTAGG('id', CAST(id AS CHAR)) FROM your_table;

    确保在需要字符串的地方使用 CAST  CONCAT 来转换数据类型,这样可以确保数据被正确地包含在双引号内。

    案例二、mysql json 查询结果去掉双引号 “”

    方法1
    select json->>'$.attr' from table;
    方法2
    select JSON_UNQUOTE(json_extract(json,'$.attr')) from table;

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
返回顶部
顶部