Apache nifi 在Jolt中,如何基于jsonarray值进行选择

Apache nifi 在Jolt中,如何基于jsonarray值进行选择,apache-nifi,jolt,Apache Nifi,Jolt,在基于jsonarray值的JOLT中,应添加输出键和值。 在输出的CO2值、CO值、O3值应基于环境值中的参数值。那么,如何应用上述过滤器 输入有效载荷为: { "id":"abcd", "env_values":[ { "param":"CO2", "values":"20.0" }, { "param":"CO", "values":"21.0" }, { "param":"O3",

在基于jsonarray值的JOLT中,应添加输出键和值。 在输出的CO2值、CO值、O3值应基于环境值中的参数值。那么,如何应用上述过滤器

输入有效载荷为:

{
  "id":"abcd",
  "env_values":[
    {
      "param":"CO2",
      "values":"20.0"
    },
    {
      "param":"CO",
      "values":"21.0"
    },
    {
      "param":"O3",
      "values":"22.0"
    }

    ]
}
输出为:

{
  "sl":"abcd",
  "CO2_VAL":"20.0",
  "CO_VAL":"21.0",
  "O3_VAL":"22.0"
}

希望这是你想要的。首先,我们将在键中添加“_VAL”。在第二个规范中,我们将为值设置键。最后,我们将每个键与值配对

[
  {
    "operation": "shift",
    "spec": {
      "id": "s1",
      "env_values": {
        "*": {
          "param": {
            "*": "param[&2].t.&_VAL"
          },
          "values": "param[&1].values"
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "s1": "s1",
      "param": {
        "*": {
          "t": {
            "*": {
              "$": "param[&3].key"
            }
          },
          "values": "param[&1].value"
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "s1": "s1",
      "param": {
        "*": {
          "value": "@(1,key)"
        }
      }
    }
  }
]