json - 基于 JSON 字段的 Jolt 条件标志

标签 json transformation jolt

我有一个 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/

相关文章:

javascript - 使用 Angular 6 循环复杂的 JSON 对象

java - 将for循环中的JSONObject添加到外面的JSONObject中

json - 为什么我的 GitHub 存储库中的代码是红色的以及如何禁用它?

html - 像 XDT 转换一样转换 HTML

arrays - 震动 : Make Nested Make a nested array as part of main array

json - RHS 的震动通配符如何工作?

java - Json 数据分配给 java 类

xml - Azure 集成帐户( map - XSLT)- 使用逻辑应用将 2 个不同的 XML 合并为单个 xml

xsd - cobol 到 xml 架构 - WTX 工具

java - 使用 JOLT 转换具有嵌套数组对象的对象数组