比较2个JSON数组以获取匹配和不匹配的输出 [英] Compare 2 JSON arrays to get matching and un-matching outputs

查看:131
本文介绍了比较2个JSON数组以获取匹配和不匹配的输出的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要使用Mule 4 dataweave 2.0比较2个JSON数组,以获取匹配和不匹配的输出.输入的JSON有效负载示例如下:

I need to compare 2 JSON arrays using Mule 4 dataweave 2.0 to get matching and un-matching outputs. The sample input JSON payload is given below:

[
    {
        "CODE": "A11",
        "NAME": "Alpha",
        "ID": "C10000"
    },
    {
        "CODE": "B12",
        "NAME": "Bravo",
        "ID": "B20000"
    },
    {
        "CODE": "C11",
        "NAME": "Charlie",
        "ID": "C30000"
    },
    {
        "CODE": "D12",
        "NAME": "Delta",
        "ID": "D40000"
    },
    {
        "CODE": "E12",
        "NAME": "Echo",
        "ID": "E50000"
    }
]

这必须与下面的ID/IDENTITY字段进行比较.

This has to be compared to the below on ID/IDENTITY field.

[
    {
        "IDENTITY": "D40000",
        "NM": "Delta"
    },
    {
        "IDENTITY": "C30000",
        "NM": "Charlie"
    }
]

我的预期输出是2个包含匹配和不匹配对象的变量数组:

My expected output is 2 variable arrays containing matching and un-matching objects:

varMatch: 
[
    {
        "CODE": "C11",
        "NAME": "Charlie",
        "ID": "C30000"
    },
    {
        "CODE": "D12",
        "NAME": "Delta",
        "ID": "D40000"
    }
]
varUnmatch:
[
    {
        "CODE": "A11",
        "NAME": "Alpha",
        "ID": "C10000"
    },
    {
        "CODE": "B12",
        "NAME": "Bravo",
        "ID": "B20000"
    },
    {
        "CODE": "E12",
        "NAME": "Echo",
        "ID": "E50000"
    }
]

推荐答案

这是另一个解决方案,尽管前两个解决了您的问题:

Here's another solution, albeit the previous two are solving your problem:

%dw 2.0
output application/dw
var data = [
    {
        "CODE": "A11",
        "NAME": "Alpha",
        "ID": "C10000"
    },
    {
        "CODE": "B12",
        "NAME": "Bravo",
        "ID": "B20000"
    },
    {
        "CODE": "C11",
        "NAME": "Charlie",
        "ID": "C30000"
    },
    {
        "CODE": "D12",
        "NAME": "Delta",
        "ID": "D40000"
    },
    {
        "CODE": "E12",
        "NAME": "Echo",
        "ID": "E50000"
    }
]

var searchData = [
    {
        "IDENTITY": "D40000",
        "NM": "Delta"
    },
    {
        "IDENTITY": "C30000",
        "NM": "Charlie"
    }
]
---
data dw::core::Arrays::partition (e) -> searchData.*IDENTITY contains e.ID

选择表现最佳的那个并使用它.

Pick the one that perfoms the best and use it.

这篇关于比较2个JSON数组以获取匹配和不匹配的输出的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆