首页 > 解决方案 > 从 JSON_OBJECT 输出中删除转义字符

问题描述

所以问题如下所示,我有一个表,它有一个 CLOB 列,它存储 JSON 字符串。假设列名是message。现在我正在生成另一个 JSON,其中包含这个消息字段以及一些额外的字段。它看起来像下面

{
  "groupId": "12345",
  "payloads": [
    {
      "message": "JSON",
      "key_value": "200",
      "kafkaTopic": "XXXX",
      "encryptInd": "Y"
    },
    {
      "message": "JSON",
      "key_value": "100",
      "kafkaTopic": "XXXX",
      "encryptInd": "Y"
    }
  ]
}

我正在使用 JSON_OBJECT 和 JSON_ARRAYAGG 来生成最终的 JSON。查询看起来像

SELECT     JSON_OBJECT(KEY 'groupId' VALUE 12345,
                       KEY 'payloads' VALUE JSON_ARRAYAGG(JSON_OBJECT(KEY 'message'   VALUE gko.message,
                       KEY 'key_value' VALUE gko.key_value,
                       KEY 'kafkaTopic'  VALUE gkor.topic_name,
                       KEY 'encryptInd' VALUE gkor.encrypt_ind RETURNING CLOB)
                       RETURNING CLOB) RETURNING CLOB )

but the problem is JSON message with the tag 'message' is coming with escape "\" characters. like below

{"groupId":12345,"payloads":[{"message":"{\"code\":\"SALE\",\"header\":{\"tranType\":\"

请让我知道如何避免消息中的转义字符。

标签: oracleplsql

解决方案


以以下方式更改查询后,转义字符不再出现

JSON_OBJECT(KEY 'message'   VALUE gko.message FORMAT JSON

推荐阅读