json 的 Jolt 变换 - 如何为 null 值添加移位操作

Jolt transformation of json - how to add shift operation for null value

我有三种情况:

场景一:"testInt" == 10时,"isTrue"应设为false"testInt"设为0"testString" 原样。

输入

{
"testString" :"testValue",
"testInt": 10,
"isTrue": true
}

预期输出

{
"testString" :"testValue",
"testInt": 0,
"isTrue": false
}

场景 2:"testInt" == null 时,应删除 "testInt",其他则保持原样。

输入

{
"testString" :"testValue",
"testInt": null,
"isTrue": true
}

预期输出

{
"testString" :"testValue",
"isTrue": true
}

场景3:"testInt" != 10(也not null)时没有变化。

输入

{
"testString" :"testValue",
"testInt": 20,
"isTrue": true
}

预期输出

{
"testString" :"testValue",
"testInt": 20,
"isTrue": true
}

如果有人建议我如何通过 jolt shift 操作来实现这些,那将会很有帮助。

您可以定义这样的 shift 操作以及 default 操作,以便能够通过 "null"null 的转换来处理 null 的情况

[{
"operation": "default",
"spec": {
    "testInt": "null"
}
},{
    "operation": "shift",
    "spec": {
        "testString": "testString",
        "testInt": {
            "10": {
                "#0": "testInt"
            },
            "null": null,
            "*": {
                "@(2,testInt)": "testInt"
            }

        },
        "isTrue": {
            "@(2,testInt)": {
                "10": {
                    "#false": "isTrue"
                },
                "*": {
                    "@(3,isTrue)": "isTrue"
                }
            }
        }

    }
}]

其中 @(integer,key) 例如 "@(2,testInt)""@(3,isTrue)" 表示上升到开始搜索所需密钥的级别,作为第二个参数显示。这可以通过计算 "spec": { 之后的左花括号来计算,除了 "spec": {.

中的第一个 {