我有一个 JSON 输入如下
场景 1:
{
"accountType": "Admin",
"accountInformation": {
"user": "internal",
"source": "Facebook",
"internalAccount": "false"
}
}
输出.json
{
"userFlag":true
}
我需要在Java中派生一个userFlag,只有当用户是“内部”并且来源是“时,它才应该是true” Facebook ”。如果用户为null或来源不是“Facebook”,则应将 userFlag 设置为internalAccount 的值。
场景 2:
{
"accountType": "Admin",
"accountInformation": {
"user": "internal",
"source": "Google",
"internalAccount": "false"
}
}
输出.json
{
"userFlag":false
}
[
{
"operation": "shift",
"spec": {
"accountInformation": {
"source": {
"Facebook": {
"#true": "sourceFlag"
}
},
"user": {
"internal": {
"#true": "userInternalFlag"
}
},
"internalAccount": "userFlag"
}
}
},
{
"operation": "modify-overwrite-beta",
"spec": {
"result": "=equals(@(1,sourceFlag),@(1,userInternalFlag))"
}
},
{
"operation": "modify-overwrite-beta",
"spec": {
"userFlag": "=equals(@(1,result), 'true')"
}
},
{
"operation": "modify-overwrite-beta",
"spec": {
"userFlag": "=toBoolean(@(1,userFlag))"
}
},
{
"operation": "remove",
"spec": {
"sourceFlag": "",
"userInternalFlag": "",
"result": ""
}
}
]
产生输出:
{
"userFlag" : true
}
但是此输入不应产生值为
{
"accountType": "Admin",
"accountInformation": {
"user": "",
"source": "Facebook",
"internalAccount": false
}
}
实际:
{
"userFlag" : true
}
预期:
{
"userFlag" : false
}
最佳答案
您可以使用以下 Jolt 规范
[
{
"operation": "modify-default-beta",
"spec": {
"accountInformation": {
"user|source": "null"
}
}
},
{
"operation": "shift",
"spec": {
"accountInformation": {
"user": {
"internal": {
"@2,source": {
"Facebook": {
"#true": "userFlag"
},
"*": {
"@4,internalAccount": "userFlag"
}
}
},
"*": {
"@2,internalAccount": "userFlag"
}
}
}
}
}
]
关于json - 基于 JSON 字段的 Jolt 条件标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77106800/