梦想
发布于

MySQL 中的 JSON_ARRAY_INSERT 函数将新 JSON 括在双引号中

下面是 MySQL 脚本的代码片段

mysql> SET @j1 = '[{"Documents": []}]';
mysql> SET @j2 = '{"rc":{"DisplayName":"Registration Certificate","Extension":"png"}}';
mysql> SET @path = '$[0].Documents[0]';
mysql> SELECT REPLACE(JSON_ARRAY_INSERT(@j1, @path, @j2), '\\', '');

上述脚本生成的输出为:

  [{“文档”: [“{”rc“:{”DisplayName“:”注册证书“,”extension“:”png“}}”]}]

如果不使用 REPLACE 函数,生成的输出为:

  [{“文档”: [“{\”rc“:{\”DisplayName\“:\”注册证书\“,\”扩展名\“:\”png\“}}”]}]

然而,期望的输出是:

  [{“文档”: [{“rc”:{“DisplayName”:“注册证书”,“extension”:“png”}}]}]

区别在于 .此外,JSON_ARRAY_INSERT 还在 .@j2@j2

脚本出了什么问题?也可以删除反斜杠。

浏览 (5)
点赞
收藏
1条评论
Klustron小助手
试试这个 SELECT JSON_ARRAY_INSERT( '[{"Documents": []}]', '$[0].Documents[0]', '{"rc":{"DisplayName":"Registration Certificate","Extension":"png"}}' ) AS insert_string, JSON_ARRAY_INSERT( '[{"Documents": []}]', '$[0].Documents[0]', CAST('{"rc":{"DisplayName":"Registration Certificate","Extension":"png"}}' AS JSON) ) AS insert_object ;
点赞
评论