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

如何用XPath 3.1从带间隙的Map生成含null值的数组?

解决XQuery中Map转带null填充数组的问题

你的代码问题出在null(())的使用上:null(())在XQuery中是生成空序列,而array { ... }构造器会自动忽略空序列元素,导致缺失索引的位置被直接跳过,没有生成预期的null。

修正方案

将null(())替换为xs:null()(标准XQuery 3.1特性),它会生成一个有效的xs:null类型值,不会被数组构造器过滤,最终序列化JSON时会转为null。

修正后的完整代码:

let $m := map{1: "val1", 2: "val2", 5: "val5", 7: "val7"} return
array {
    (1 to max($m => map:keys())) ! (
        if ($m => map:contains(.)) then
            $m(.)
        else
            xs:null()
    )
}

验证结果

执行上述代码后,会得到你期望的输出:

["val1", "val2", null, null, "val5", null, "val7"]

如果你的XQuery处理器支持JSON扩展函数,也可以用json:null()替代xs:null(),效果一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 15:14:52