使用Jolt Spec将字符串列表转换为对象



需要将下面的JSON转换为所需的格式,这里SpecList是需要转换为对象列表的字符串列表。

输入:

{
"Address": "ABC",
"latitude": "xy.zx",
"longitude": "xy.zm",
"name": "name",
"pincode": "123456",
"registrationId": "xxcd",
"Doctor": [
{
"Name": "ABC",
"SpecList": [
"A",
"B",
"C"
],
"practitonerId": "z",
"location": {
"lat": "ab.cd",
"lng": "ab.cd"
}
},
{
"Name": "def",
"SpecList": [
"D",
"E"
],
"practitonerId": "22",
"location": {
"lat": "ef.gh",
"lng": "ef.gh"
}
}
]
}

当前震动规格,但没有得到想要的输出:

[
{
"operation": "shift",
"spec": {
"Address": "hospitalAddress",
"latitude": "hospitalLatitude",
"longitude": "hospitalLongitude",
"name": "hospitalName",
"pincode": "hospitalPincode",
"registrationId": "hospitalRegistrationId",
"Doctor": {
"*": {
"Name": "doctors[#2].doctorName",
"practitonerId": "doctors[#2].doctorPractitionerId",
"SpecList": {
"*": {
"@": "doctors[#1].doctorSpecializations.[].specializationName"
}
}
}
}
}
}
]

所需输出:

{
"hospitalAddress" : "ABC",
"hospitalLatitude" : "xy.zx",
"hospitalLongitude" : "xy.zm",
"hospitalName" : "name",
"hospitalPincode" : "123456",
"hospitalRegistrationId" : "xxcd",
"doctors" : [ {
"doctorName" : "abc",
"doctorPractitionerId" : "z",
"doctorSpecializations" : [ {
"specializationName" : "A"
}, {
"specializationName" : "B"
}, {
"specializationName": "C"
} ]
}, {
"doctorName" : "def",
"doctorPractitionerId" : "22"
"doctorSpecializations" : [ {
"specializationName" : "D"
}, {
"specializationName" : "E"
} ]
}]
} 

你可以使用这个规范:

获取&数组的索引:

[
{
"operation": "shift",
"spec": {
"Address": "hospitalAddress",
"latitude": "hospitalLatitude",
"longitude": "hospitalLongitude",
"name": "hospitalName",
"pincode": "hospitalPincode",
"registrationId": "hospitalRegistrationId",
"Doctor": {
"*": {
"Name": "doctors[&1].doctorName",
"practitonerId": "doctors[&1].doctorPractitionerId",
"SpecList": {
"*": {
"@": "doctors[&3].doctorSpecializations.[&1].specializationName"
}
}
}
}
}
}
]

如果您想使用#,您可以使用以下规格:

[
{
"operation": "shift",
"spec": {
"Address": "hospitalAddress",
"latitude": "hospitalLatitude",
"longitude": "hospitalLongitude",
"name": "hospitalName",
"pincode": "hospitalPincode",
"registrationId": "hospitalRegistrationId",
"Doctor": {
"*": {
"Name": "doctors[#2].doctorName",
"practitonerId": "doctors[#2].doctorPractitionerId",
"SpecList": {
"*": {
"@": "doctors[#4].doctorSpecializations.[#2].specializationName"
}
}
}
}
}
}
]

注意:您还可以对SpecList进行如下总结:

"SpecList": {
"*": "doctors[#3].doctorSpecializations.[#1].specializationName"
}

最新更新