You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL JSON函数返回字符串而非JSON对象问题求解

解决MySQL函数中JSON变量嵌套序列化问题

你的函数执行后返回的obj值是字符串形式的JSON,而非嵌套JSON对象,这是因为MySQL直接将JSON类型变量传入JSON_OBJECT时会自动序列化为字符串。以下是两种可行的解决方法:

方法一:使用JSON_SET构建嵌套JSON

修改函数代码如下:

delimiter $$
CREATE FUNCTION sf_textjson()
RETURNS json
BEGIN
    declare s JSON;
    SET s = JSON_OBJECT('year', 2024);
    RETURN JSON_SET(JSON_OBJECT(), '$.obj', s);
END $$
delimiter ;

方法二:显式解析JSON变量(仅作参考,推荐用方法一)

通过JSON_UNQUOTE将JSON变量转换为可嵌入的JSON对象:

delimiter $$
CREATE FUNCTION sf_textjson()
RETURNS json
BEGIN
    declare s JSON;
    SET s = JSON_OBJECT('year', 2024);
    RETURN JSON_OBJECT('obj', JSON_UNQUOTE(s));
END $$
delimiter ;

原理说明

JSON_SET可以直接将JSON类型的值写入目标JSON对象的指定路径($.obj),避免了JSON_OBJECT对参数的字符串序列化处理,从而生成正确的嵌套JSON结构。

内容的提问来源于stack exchange,提问作者End1-1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 20:22:09