arrays - Jolt 将元素从子数组传递到父数组
问题描述
在这里,我尝试将 2 个子数组中的元素合并到其父数组中,并留下另一个数组并将第二个数组向上移动两个级别。
有没有办法根据条件更改值,例如在下面的输入中,party.party.sno ="1" ,可以将其更新为party..sno='Y'
输入:
{
"Parties": [
{
"party": {
"partyId": "100005767",
"sno": 1,
"fn": "Th1mas",
"ln": "Edison",
"emails": [
{
"emailAddress": "jkjk@ui.com"
}
],
"addresses": [
{
"zip": ""
}
],
"shealth": [
{
"stcd": "TN",
"lno": "1"
}
]
},
"seq": {
"typeCd": "1"
}
}
]
}
预期输出:
{
"person": {
"first_name": "Th1mas",
"middle_initial": "Edison",
"last_name": "",
"email_address": "jkjk@ui.com",
"pinCode": ""
},
"shealth": {
"statecd": "ON"
},
//this is the seq no from party.sno
"primary": "Y",
"typeCd": "1"
}
尝试这样的规范:
[
{
"operation": "shift",
"spec": {
"Parties": {
"*": {
"party": {
"emails": {
"*": {
"emailAddress": "[&1].email_address",
"@(2,fn)": "[&1].first_name",
"@(2,ln)": "[&1].last_name"
}
},
"addresses": {
"*": {
"zip": "[&1].pinCode"
}
},
"shealth": {
"*": {
"stcd": "[&1].statecd"
}
}
}
}
}
}
}
]
解决方案
这个规范有效,
"party": {
"sno": {
"1": {
"#Y": "primary"
}
},
尝试从当前级别应用条件,
[
{
"operation": "shift",
"spec": {
"Parties": {
"*": {
"party": {
"sno": {
"1": {
"#Y": "primary"
}
},
"emails": {
"*": {
"emailAddress": "person.email_address",
"@(2,fn)": "person.first_name",
"@(2,ln)": "person.last_name"
}
},
"addresses": {
"*": {
"zip": "person.pinCode"
}
},
"shealth": {
"*": {
"stcd": "shealth.statecd"
}
}
},
"seq": {
"typeCd": "typeCd"
}
}
}
}
}
]
推荐阅读
- c# - 如何在 ASP.NET Core 视图中正确显示复选框表单控件?
- flutter - 如何使用 url_launcher 在 Flutter 应用程序中打开 URL?
- python - 正则表达式:删除点前长度为 1-3 的字母
- ios - 更新 ObservableObject 中的变量而不滞后
- c++ - 在 win32/winapi 中取消排序的 TreeView 列表
- xslt - 重新链接跳过元素的子元素的 parentID
- qt - cmake 上的 Windows 错误将 Opencv 与 Qt 链接
- python-3.x - Windows/Python 检查文件是否打开或正在使用
- teradata - 如何将表作为参数传递给存储过程
- sql - 如何在类型结构中呈现动态键?