arrays - JOLT 转换将相同的元素添加到所有数组中

标签 arrays json apache-nifi transformation jolt

我想向数组的每个元素添加相同的值。 我的方法是使用默认值来添加值。 它与this one有点不同。 , 因为: 我不知道如何写入数组的现有元素而不是新元素。

输入:

{
  "counterTop": {
    "loaf1": [
      {
        "type": "white",
        "unit": "mm",
        "test": "correct"
      },
      {
        "type": "black",
        "unit": "cm",
        "test": "false"
      }
    ]
  }
}

规范:

[
  {
    "operation": "default",
    "spec": {
      "counterTop": {
        "loaf1": {
          "*": {
            "slices": ""
          }
        }
      }
    }
  }
]

预期输出:

{
  "counterTop": {
    "loaf1": [
      {
        "type": "white",
        "unit": "mm",
        "test": "correct",
        "slices": ""
      },
      {
        "type": "black",
        "unit": "cm",
        "test": "false",
        "slices": ""
      }
    ]
  }
}

电流输出

{
  "counterTop": {
    "loaf1": [
      {
        "type": "white",
        "unit": "mm",
        "test": "correct"
      },
      {
        "type": "black",
        "unit": "cm",
        "test": "false"
      }
    ]
  }
}

这里有人有解决办法吗?在数组之外它可以正常工作,但我无法进入那里。

提前致谢!

最佳答案

一种选择是应用两次移位变换;为了通过进入最内层提取列表(loaf1)的键值对,同时在第一个层中添加新的键值对("slices":"")步骤,然后将所有列表组合回第二个列表中的原始列表,例如

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "*": {
          "*": {
            "*": "&",
            "# ": "slices"
          }
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": {
        "*": "counterTop.loaf1[&].&1"
      }
    }
  }
]

关于arrays - JOLT 转换将相同的元素添加到所有数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68405536/

相关文章:

c - 在没有函数帮助的情况下将 char 添加到字符串

PHP从一个数组创建多个给定大小的json文件

java - map 中的 Ljava.lang.String

json - Apache Nifi - 从 Avro 中提取属性

hadoop - Nifi消耗卡夫卡不接受上游连接

在C中将ASCII码转换为字符串

json - 如何将 JSON 数据放入 Razor View 脚本 block

json - 在没有 HTTP 请求的情况下加载 JSON

ios - 显示我从 JSON 获得的数据

replace - 如何在Nifi ReplaceText处理器中用属性值替换文本?