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": {
.
中的第一个 {
我有三种情况:
场景一:当"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": {
.
{