使用 jolt 中的条件更新 json 属性
Update json attribute with a condition in jolt
我有一个问题,我不明白如何更新带有 jolt 条件的属性。例如,我有一个带有内部项目数组的对象。如果另一个 Item 属性等于某物并且 return 对象,我需要更新 Item 属性。
输入:
{
"object": {
"id": "3cf1543e-be4d-11eb-84c0-87ba01ce01e0",
"a": "abc",
"del_sign": false,
"items": [
{
"id": "111",
"del_sign": false
},
{
"id": "222",
"del_sign": false
},
{
"id": "333",
"del_sign": false
}
],
"b": [],
"c": []
}
}
我需要:
{
"object": {
"id": "3cf1543e-be4d-11eb-84c0-87ba01ce01e0",
"a": "abc",
"del_sign": false,
"items": [
{
"id": "111",
// here changes to true
"del_sign": true
},
{
"id": "222",
"del_sign": false
},
{
"id": "333",
"del_sign": false
}
],
"b": [],
"c": []
}
}
我目前的颠簸规格:
[
{
"operation": "shift",
"spec": {
"object": {
"items": {
"*": {
"id": {
"111": {
"@2": {
"#true": "del_sign",
"": "&3"
}
}
}
}
}
}
}
}
]
您可以使用两步 shift 转换。
确定条件中的相关 del_sign
值,因为在同一对象 (items
) 中有两个数组 id
和 del_sign
,并在其中正确格式化它们第二步如
[
{
"operation": "shift",
"spec": {
"*": {
"*": "&",
"items": {
"*": {
"id": {
"111": {
"@(2,&1)": "&4.&3.id",
"#true": "&4.&3.del_sign"
},
"*": {
"@1": "&4.&3.&2",
"@(2,del_sign)": "&4.&3.del_sign"
}
}
}
}
}
}
},
{
"operation": "shift",
"spec": {
"*": "&",
"items": {
"*": {
"*": "&2.[#2].&"
}
}
}
}
]
编辑:如果除了当前属性(id
,del_sign
)之外还有更多属性,那么最好使用以下代码,以免单独重复每个键,例如
[
{
"operation": "shift",
"spec": {
"*": {
"*": "&",
"items": {
"*": {
"id": {
"111": {
"@2": {
"#true": "&5.&2.del_sign",
"*": "&5.&1.&"
}
},
"*": {
"@2": "&4.&3"
}
}
}
}
}
}
},
{
"operation": "cardinality",
"spec": {
"items": {
"*": {
"del_sign": "ONE"
}
}
}
},
{
"operation": "shift",
"spec": {
"*": "&",
"items": {
"*": {
"*": "&2.[#2].&"
}
}
}
}
]
我有一个问题,我不明白如何更新带有 jolt 条件的属性。例如,我有一个带有内部项目数组的对象。如果另一个 Item 属性等于某物并且 return 对象,我需要更新 Item 属性。
输入:
{
"object": {
"id": "3cf1543e-be4d-11eb-84c0-87ba01ce01e0",
"a": "abc",
"del_sign": false,
"items": [
{
"id": "111",
"del_sign": false
},
{
"id": "222",
"del_sign": false
},
{
"id": "333",
"del_sign": false
}
],
"b": [],
"c": []
}
}
我需要:
{
"object": {
"id": "3cf1543e-be4d-11eb-84c0-87ba01ce01e0",
"a": "abc",
"del_sign": false,
"items": [
{
"id": "111",
// here changes to true
"del_sign": true
},
{
"id": "222",
"del_sign": false
},
{
"id": "333",
"del_sign": false
}
],
"b": [],
"c": []
}
}
我目前的颠簸规格:
[
{
"operation": "shift",
"spec": {
"object": {
"items": {
"*": {
"id": {
"111": {
"@2": {
"#true": "del_sign",
"": "&3"
}
}
}
}
}
}
}
}
]
您可以使用两步 shift 转换。
确定条件中的相关 del_sign
值,因为在同一对象 (items
) 中有两个数组 id
和 del_sign
,并在其中正确格式化它们第二步如
[
{
"operation": "shift",
"spec": {
"*": {
"*": "&",
"items": {
"*": {
"id": {
"111": {
"@(2,&1)": "&4.&3.id",
"#true": "&4.&3.del_sign"
},
"*": {
"@1": "&4.&3.&2",
"@(2,del_sign)": "&4.&3.del_sign"
}
}
}
}
}
}
},
{
"operation": "shift",
"spec": {
"*": "&",
"items": {
"*": {
"*": "&2.[#2].&"
}
}
}
}
]
编辑:如果除了当前属性(id
,del_sign
)之外还有更多属性,那么最好使用以下代码,以免单独重复每个键,例如
[
{
"operation": "shift",
"spec": {
"*": {
"*": "&",
"items": {
"*": {
"id": {
"111": {
"@2": {
"#true": "&5.&2.del_sign",
"*": "&5.&1.&"
}
},
"*": {
"@2": "&4.&3"
}
}
}
}
}
}
},
{
"operation": "cardinality",
"spec": {
"items": {
"*": {
"del_sign": "ONE"
}
}
}
},
{
"operation": "shift",
"spec": {
"*": "&",
"items": {
"*": {
"*": "&2.[#2].&"
}
}
}
}
]