我有复杂的(EDI)输入,如下所示:
{
"INS-2000_loop": [
{
"INS_05": "A",
"INS_06": "D",
"INS_08": "AC"
},
{
"REF_01": "0F",
"REF_02": "111111111"
},
{
"NM1-2100A_loop": [
{
"NM1_01": "IL",
"NM1_02": "1",
"NM1_03": "aaa",
"NM1_04": "bbb"
},
{
"PER_03": "HP",
"PER_04": "1234567890"
}
]
},
{
"HD-2300_loop": [
{
"HD_01": "001",
"HD_03": "HMO",
"HD_04": "485-014-000",
"HD_05": "IND"
},
{
"DTP_01": "348",
"DTP_02": "D8",
"DTP_03": "20240401"
}
]
},
{
"HD-2300_loop": [
{
"HD_01": "001",
"HD_03": "HMO",
"HD_04": "485-014-000",
"HD_05": "IND"
},
{
"DTP_01": "348",
"DTP_02": "D8",
"DTP_03": "20240101"
},
{
"DTP_01": "349",
"DTP_02": "D8",
"DTP_03": "20240331"
}
]
}
]
}
输入可以有任意数量的
HD-2300_loop
元素(通常少于 5 个),并且只能有一个 INS-2000_loop
元素。我希望 HD-2300_loop
元素“驱动”输出,以便输出是与 HD-2300_loop
元素数量相同长度的复杂对象数组。输出数组的复杂对象需要具有 HD-2300_loop
元素中的所有数据以及 INS-2000_loop
元素中除 HD-2300_loop
之外的所有子元素的数据,如下所示:
[
{
"L2300": [
{
"HD_01": "001",
"HD_03": "HMO",
"HD_04": "485-014-000",
"HD_05": "IND"
},
{
"DTP_01": "348",
"DTP_02": "D8",
"DTP_03": "20240101"
},
{
"DTP_01": "349",
"DTP_02": "D8",
"DTP_03": "20240331"
}
],
"L2000": [
{
"INS_05": "A",
"INS_06": "D",
"INS_08": "AC"
},
{
"REF_01": "0F",
"REF_02": "111111111"
},
{
"NM1-2100A_loop": [
{
"NM1_01": "IL",
"NM1_02": "1",
"NM1_03": "aaa",
"NM1_04": "bbb"
},
{
"PER_03": "HP",
"PER_04": "1234567890"
}
]
}
]
},
...
]
我从以下规范开始,但它没有给出我想要的东西 - 我还没有弄清楚如何将
@3
选择注入到 @1
选择的结果中。另外,我还没有弄清楚如何重命名选择结果(到 L2300
和 L2000
)以及如何跳过 HD-2300_loop
选择结果中的 @3
子项。
[
{
"operation": "shift",
"spec": {
"*": {
"*": {
"HD-2300_loop": {
"@1": "",
"@3": ""
}
}
}
}
}
]
如果有人能给我指点 Jolt 文档或备忘单来解释
&
运算符如何工作,我也将不胜感激。非常感谢。
嗨,这个规范将帮助您解决查询:
[
{
"operation": "shift",
"spec": {
"INS-2000_loop": {
"*": {
"HD-2300_loop": {
"*": {
"*": "L2300[#2].&"
}
},
"INS_*": "L2000.[#2].&",
"REF_*": "L2000.[#2].&",
"NM1-2100A_loop": "L2000.[#2].&"
}
}
}
},
{
"operation": "cardinality",
"spec": {
"L2300": {
"*": {
"*": "ONE"
}
}
}
}
]