如何在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));
逻辑说明
- 默认字段兜底:通过
defaultPolicyFields确保输出对象必然包含policyName1至policyName6,即使var2为空数组,这些字段也会以null值存在。 - 提取数组数据:判断
var2数组长度,非空则取第一个元素,否则用空对象占位。 - 对象合并顺序:使用对象展开运算符按「原对象→默认policy→实际policy数据」的顺序合并,保证实际policy数据会覆盖默认值,同时原对象的字段不会被修改。
测试示例
- 当
var2包含对象时,输出会将var2中的policy字段覆盖默认值,保留原对象的所有字段。 - 当
var2为空数组时,输出的对象包含原对象所有字段,且policyName1至policyName6均为null。
内容的提问来源于stack exchange,提问作者Andy
相关产品推荐
相关产品推荐

