当前位置: 首页 > 知识库问答 >
问题:

从数组进行JOLT转换

沃念
2023-03-14

我正在进行转换,在我将输入定义为数组之前,它工作正常。我当前的(工作!)示例是:INPUT

{
  "trainerName": "Nahuel",
  "trainingName": "1st Training",
  "trainee1firstName": "Martin",
  "trainee2firstName": "Para"
}

使用此JOLT规范:

[
  {
    "operation": "shift",
    "spec": {
      "trainerName": "trainerName",
      "trainingName": "training.[0].trainingName",
      "trainee1*": "training.[0].trainees.[0].&(0,1)",
      "trainee2*": "training.[0].trainees.[1].&(0,1)"
    }
  }
]

输出是:

{
  "trainerName" : "Nahuel",
  "training" : [ {
    "trainingName" : "1st Training",
    "trainees" : [ {
      "firstName" : "Martin"
    }, {
      "firstName" : "Para"
    } ]
  } ]
}

这很完美,但是:我真正期望的输入是这样的:

[
  {
    "rowNumber": 1,
    "trainerName": "Nahuel",
    "trainingName": "1st Training",
    "trainee1firstName": "Martin",
    "trainee2firstName": "Para"
  },
  {
    "rowNumber": 2,
    "trainerName": "Nahuel",
    "trainingName": "2nd Training",
    "trainee1firstName": "Greg",
    "trainee2firstName": "Thomas"
  }
]

我需要这样的输出:

{
    "trainerName": "Nahuel",
    "training": [{
            "trainingName": "1st Training",
            "trainees": [{
                "firstName": "Martin"
            }, {
                "firstName": "Para"
            }]
        },
        {
            "trainingName": "2nd Training",
            "trainees": [{
                "firstName": "Greg"
            }, {
                "firstName": "Thomas"
            }]
        }
    ]
}

我将在每个数组对象中接收“trainerName”,但我只需要使用一个。

你能帮我找出解决办法吗?我正在寻找几种解决方案,但找不到适合此示例的解决方案。

非常感谢提前!贝斯!

共有1个答案

陶英纵
2023-03-14

你的说明几乎是正确的。您需要拥有< code>[

也为trainName采取的第一元素使用修改覆盖测试操作。

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "trainerName": "trainerName",
        "trainingName": "training.[&1].trainingName",
        "trainee1*": "training.[&1].trainees.[0].&(0,1)",
        "trainee2*": "training.[&1].trainees.[1].&(0,1)"
      }
    }
  },
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "trainerName": "=firstElement(@(1,trainerName))"
    }
  }
]
 类似资料:
  • 我需要使用JOLT转换一个JSON。我是雷震改造的新手。以下是详细内容。我们正在尝试使用NiFi中的Jolt转换来转换jsons。 这是输入 这是我写的作业(更新感谢哈里克里希纳!) 我期待下面的输出。 我无法使循环工作。这是我从我写的作业中得到的输出。

  • 我正在尝试使用JOLT(使用NiFi JoltTransformJson处理器)将JSON转换为不同的格式。对于单个JSON记录,正在使用的JOLT在JOLT应用程序演示中运行良好,而如果我使用多个JSON记录执行,那么我在JOLT应用程序演示中没有得到预期的输出。有人能告诉我在JOLT规范中需要做哪些额外的更改来处理多个JSON记录吗? 示例输入json JOLT使用: 预期输出JSON:

  • 我需要在颠簸转换规范方面的帮助。以下是我到目前为止的工作。 输入: 使用的震动代码: 电流输出: 预期产出 当只使用单个json对象时,此代码工作正常。但是当我们使用具有相同id的多个项目时,它会开始对所有相关字段进行分组。

  • 我对震动有点陌生,一直在努力进行正确的转变。任何帮助都很感激。这是我的输入数据: 我的目标是创建一个包含所有条目的数组。对于本例,将有2个条目(长度与)相同。数组(键)和(值)是1:1映射的,即它们应该具有相同的长度。 这是预期的输出:

  • 我正在尝试编写一个规范来使用jolt转换进行以下转换。我只对更改json中键的名称感兴趣,值应该保持不变。帮帮我。 输入Json: 预期输出:

  • 我必须将 JSON 输入转换为包含一个对象的数组。 我有这个 JOLT 配置: 以下是我的意见: 实际产量: 期望的输出: 你知道该怎么做吗? 谢谢你们的帮助