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

MarkLogic XQuery中XML转JSON如何避免生成额外反斜杠?

MarkLogic XML转JSON去除额外反斜杠的解决方法

问题本质

MarkLogic默认JSON转换会遵循JSON语法规范:\是JSON的转义字符,所以转换时会自动把单个\转成\\。如果业务场景需要输出单个\(即使这会生成非标准JSON),可以用以下两种方法实现:

方法一:手动拼接JSON字符串

直接提取XML文本节点的值,仅转义JSON必需的双引号,跳过反斜杠的转义:

let $xml := <text>$$\parent* \$$</text>
let $text-content := $xml/text()
// 仅转义双引号,避免反斜杠被二次转义
let $escaped-text := replace($text-content, '"', '\\"')
return '{"text": "' || $escaped-text || '"}'

执行后会生成你期望的{"text": "$$\parent* \$$"}。

方法二:自定义JSON转换配置

通过修改json:transform-to-json的配置,覆盖字符串处理逻辑,把默认转义后的\\替换回\:

import module namespace json = "http://marklogic.com/xdmp/json" at "/MarkLogic/json/json.xqy";

let $xml := <text>$$\parent* \$$</text>
let $custom-config := json:config("custom")
// 自定义字符串转换函数,还原反斜杠
let $_ := map:put($custom-config, "string-transform", function($str) {
  xdmp:quote($str, "marklogic-json") => replace("\\\\", "\")
})
return json:transform-to-json($xml, $custom-config)

注意事项

这种输出的内容不符合JSON官方规范,因为JSON要求所有反斜杠必须转义。如果下游系统是标准JSON解析器,会出现解析错误,仅建议在明确业务场景允许非标准JSON时使用。

内容的提问来源于stack exchange,提问作者Madoantony

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 12:50:25