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

如何在DataWeave中合并JSON对象与仅含0或1元素的数组

合并JSON对象与单元素数组的实现方案

需求说明

需要将一个JSON对象(var1)与一个仅包含0或1个JSON对象的数组(var2)合并,输出的JSON对象必须始终包含policyName1至policyName6字段,无论var2是否为空数组。

实现代码(JavaScript)

// 初始化默认policy字段,确保6个policy字段都存在且默认值为null
const defaultPolicyFields = {
  policyName1: null,
  policyName2: null,
  policyName3: null,
  policyName4: null,
  policyName5: null,
  policyName6: null
};

// 从var2数组中提取有效数据,数组为空则取空对象
const policyContent = var2.length > 0 ? var2[0] : {};

// 合并所有数据:原对象 + 默认policy字段 + 实际policy数据(会覆盖默认值)
const mergedResult = {
  ...var1,
  ...defaultPolicyFields,
  ...policyContent
};

// 输出格式化后的结果
console.log(JSON.stringify(mergedResult, null, 2));

逻辑说明

  1. 默认字段兜底:通过defaultPolicyFields确保输出对象必然包含policyName1至policyName6,即使var2为空数组,这些字段也会以null值存在。
  2. 提取数组数据:判断var2数组长度,非空则取第一个元素,否则用空对象占位。
  3. 对象合并顺序:使用对象展开运算符按「原对象→默认policy→实际policy数据」的顺序合并,保证实际policy数据会覆盖默认值,同时原对象的字段不会被修改。

测试示例

  • 当var2包含对象时,输出会将var2中的policy字段覆盖默认值,保留原对象的所有字段。
  • 当var2为空数组时,输出的对象包含原对象所有字段,且policyName1至policyName6均为null。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 11:25:22