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

Jsonata是否支持类似JavaScript的Spread语法来扩展对象?

在Jsonata中为对象添加属性而不重列所有属性的方法

Jsonata目前并没有像JavaScript那样的...扩展语法,没法直接通过这种方式合并对象属性。不过有更简洁的替代方案:

使用$merge()原生函数

Jsonata提供了$merge()函数,可以用来合并多个对象,实现保留原对象所有属性并添加新属性的需求。针对你的场景,代码可以这么写:

{
    "address": $merge([
        $.customer.addresses[id=$$.shippingAddressId],
        { "fullName": firstName & " " & lastName }
    ])
}

$merge()会把数组中后续对象的属性合并到第一个对象上,如果存在同名属性,后续对象的属性会覆盖前面的,完全满足你添加新属性的需求,而且不用手动列出原对象的所有属性。

显式列出属性(你当前的写法)

如果原对象属性不多,你补充的这种显式列出属性的写法可读性很好,适合属性数量少的场景:

{
    "address": $.customer.addresses[id=$$.shippingAddressId].{
        "street": street,
        "city": city,
        "fullName": firstName & " " & lastName
    }
}

这种写法虽然需要手动列属性,但逻辑直观,维护起来也方便,适合小对象的场景。

内容的提问来源于stack exchange,提问作者Alex Jäger

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 23:14:51