我需要将一个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>>'代码'
下面是输出有效负载的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"
]}
任何解决方案或任何指针都将是一个很好的帮助
答案 0 :(得分:2)
参考下面的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]
}
})
}
答案 1 :(得分:0)
您可以使用Validate JSON Schema mule组件。