我有一个 JSON 输入如下
场景1:
{
"accountType": "Admin",
"accountInformation": {
"user": "internal",
"source": "Facebook",
"internalAccount": "false"
}
}
输出.json
{
"userFlag":true
}
我需要在Java中派生一个userFlag,只有当用户是“internal”并且来源是“Facebook”时,它才应该是true。如果用户为 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
}
但是此输入不应产生 value as
{
"accountType": "Admin",
"accountInformation": {
"user": "",
"source": "Facebook",
"internalAccount": false
}
}
实际:
{
"userFlag" : true
}
预期:
{
"userFlag" : false
}
您可以使用以下 Jolt 规格
[
{
"operation": "modify-default-beta",
"spec": {
"accountInformation": {
"user": "null",
"source": "null"
}
}
},
{
"operation": "shift",
"spec": {
"accountInformation": {
"user": {
"internal": {
"@(2,source)": {
"Facebook": {
"#true": "userFlag"
},
"*": {
"@(4,internalAccount)": "userFlag"
}
}
},
"*": {
"@(2,internalAccount)": "userFlag"
}
}
}
}
}
]