繁体   English   中英

使用Mule DataWeave进行Json转换

[英]Json Conversion using mule dataweave

我需要将json(在多次调用后获取,然后将其合并)转换为特定的结构。

这是我的输入JSON负载

[{
    "shops": [{
        "shop": {
            "code": "AU5",
            "streetName": "a",
            "city": "a",
            "district": "a",
            "state": "a",
            "postalCode": "a",
            "country": "a"
        }
    }, {
        "shop": {
            "code": "b",
            "streetName": "b",
            "city": "b",
            "district": "b",
            "state": "b",
            "postalCode": "b",
            "country": "b"
        }
    }]
},


[
    [{
        "salesOffice": {
            "shop": {
                "code": "AU5"
            },
            "office": "MEL",
            "branch": "MEL",
            "district": "SPR",
            "subRegion": "SPR",
            "region": "AP"
        }
    }],
    [{
            "salesOffice": {
                "shop": {
                    "code": "b"
                },
                "office": "999",
                "branch": "999",
                "district": "999",
                "subRegion": "999",
                "region": "999"
            }
        }

    ]

]]

以下是预期的输出json

{
"shops": [
    {
        "shop": {
            "code": "AU5",
            "streetName": "a",
            "city": "a",
            "district": "a",
            "state": "a",
            "postalCode": "a",
            "country": "a",
            "salesOffice": {
                "office": "MEL",
                "branch": "MEL",
                "district": "SPR",
                "subRegion": "SPR",
                "region": "AP"
            }
        }
    },
    {
        "shop": {
            "code": "b",
            "streetName": "b",
            "city": "b",
            "district": "b",
            "state": "b",
            "postalCode": "b",
            "country": "b",
            "salesOffice": {
                "office": "999",
                "branch": "999",
                "district": "999",
                "subRegion": "999",
                "region": "999"
            }
        }
    }
]}

转换时,商店内的“代码”应与salesOffice >> shop >>'code'内的“代码”匹配

以下是输出有效负载的Json Schema(应针对输出进行验证)

{
"$schema": "http://json-schema.org/draft-04/schema#",

"type": "object",
"properties": {
    "shops": {

        "type": "array",
        "items": {

            "type": "object",
            "properties": {
                "shop": {

                    "type": "object",
                    "properties": {
                        "code": {

                            "type": "string"
                        },
                        "streetName": {

                            "type": "string"
                        },
                        "city": {

                            "type": "string"
                        },
                        "district": {

                            "type": "string"
                        },
                        "state": {

                            "type": "string"
                        },
                        "postalCode": {

                            "type": "string"
                        },
                        "country": {

                            "type": "string"
                        }
                    },
                     "salesOffice": {

                        "type": "object",
                            "properties": {
                              "office": {

                                "type": "string"
                              },
                              "branch": {

                                "type": "string"
                              },
                              "district": {

                                "type": "string"
                              },
                              "subRegion": {

                                "type": "string"
                              },
                              "region": {

                                "type": "string"
                              }
                            }
                        },
                    "required": [
                        "code",
                        "streetName",
                        "city",
                        "district",
                        "state",
                        "postalCode",
                        "country",
                        "salesOffice"
                    ]
                }
            },
            "required": [
                "shop"
            ]
        }
    }
},
"required": [
    "shops"
]}

任何解决方案或任何指针都会有很大帮助

请参阅以下dataweave:

%dw 1.0
%output application/json
---
{
shops: using    (salesOffice = payload[1]..salesOffice)( payload[0].shops map {
 shop :
  {
    code: $.shop.code,
    streetName:$.shop.streetName,
    city:$.shop.city,
    district:$.shop.district,
    state:$.shop.state,
    postalCode:$.shop.postalCode,
    country:$.shop.country,
    salesOffice: using (code= $.shop.code) ( salesOffice[?(code == $.shop.code)] map {
    office:$.office,
    branch:$.branch,
    district:$.district,
    subRegion:$.subRegion,
    region:$.region
})[0]
}
})
}

您可以使用Validate JSON Schema mule组件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM