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

如何用硬编码方式在JSONPath中使用append函数追加数组?

JSONPath中使用append函数硬编码追加数组的方法

问题背景

给定测试JSON数据:

{
    "book": [{
            "category": "reference"
        }, {
            "category": "fiction"
        }
    ],
    "rndarr": ["foo", 10]
}

尝试用硬编码数组调用append函数时遇到异常:

  • 执行$.book.append(["foo",10]),返回结果中10丢失
  • 执行$.book.append([10]),返回格式异常,得到"10]"

预期是将整个数组作为单个元素追加到book数组中,而引用已存在数组$.book.append($.rndarr)可以得到预期结果。核心问题:能否通过硬编码方式编写实现该需求的JSONPath表达式?

解决方案

可以通过硬编码方式实现,问题源于你之前的表达式不符合所用JSONPath实现的语法解析规则。以常见的Jayway JSONPath为例,推荐使用以下两种写法:

方法1:使用$()构造字面量数组(兼容性最优)

$.book.append($(["foo", 10]))
  • $()是JSONPath中用于创建字面量值的标准语法,用它包裹数组可以确保解析器将整个数组识别为单个参数传递给append函数,避免拆分解析错误。
  • 执行后得到预期结果:
{
    "book": [
        {"category": "reference"},
        {"category": "fiction"},
        ["foo", 10]
    ],
    "rndarr": ["foo", 10]
}

方法2:单引号包裹数组元素(部分实现支持)

如果你的JSONPath实现支持单引号作为字符串分隔符,也可以尝试:

$.book.append(['foo', 10])

这种写法更简洁,但兼容性不如$()语法,需根据所用实现调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 22:46:13