我有如下所示的JSON输入

Scenario 1:

{
  "accountType": "Admin",
  "accountInformation": {
    "user": "internal",
    "source": "Facebook",
    "internalAccount": "false"
  }
}

output.json个个

{
  "userFlag":true
}

我需要得到一个userFlag在Java,这应该是true,只有当用户是"internal"和来源是"Facebook".如果用户是null,或者来源不是"Facebook",则应该将userFlag设置为内部性帐户的值.

Scenario 2:

{
  "accountType": "Admin",
  "accountInformation": {
    "user": "internal",
    "source": "Google",
    "internalAccount": "false"
  }
}

output.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": ""
    }
  }
]

制作the output:

{
  "userFlag" : true
}

但对于此输入,何时不应生成value作为

{
  "accountType": "Admin",
  "accountInformation": {
    "user": "",
    "source": "Facebook",
    "internalAccount": false
  }
}

actual:

{
  "userFlag" : true
}

expected:

{
  "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相关问答推荐

try 将文本标记放置在条形图上的同一高度

如何使用Laravel在MariaDB JSON kolumn中使用unicode字符

使用Jolt库对多个数组进行嵌套循环

如何使用Aeson解码带有Unicode字符的JSON文件?

在Reaction中从JSON文件中筛选数组

Oracle plsql:如何将json文件加载到嵌套表中

将部分数据字节解组到自定义 struct 中

使用 jq 重新格式化 JSON 输出

使用 Powershell,如何将 Azure AD 组成员转换为 Json 对象(文件),然后可以更新?

在这种情况下我如何实现 UnmarshalJSON 并且只为一个接口字段定义特殊行为?

每次在 SoapUI 中发送请求时,将 JSON 响应的子 node 分配给项目变量

Oracle json 对象的最后一个值不在引号中

使用杰克逊解析Kotlin 中的通用密封类

使用 jq 和 awk 拆分大型 JSON 文件

Nifi - 忽略(或删除)JSON 的第一个数字

如何删除 django jsonfield 中的特定项目

字符串的 Gson 数组到 JsonArray

gson:将 null 视为空字符串

as_json 没有在关联上调用 as_json

未调用 npm package.json 脚本