【问题标题】:I want to convert A json into another Json using JOLT transformation我想使用 JOLT 转换将 A json 转换为另一个 Json
【发布时间】:2021-09-01 14:31:57
【问题描述】:

我有以下 JSON 输入,我想删除 value 标记并在 TypeOfSTA 中设置 Title 值。
我想使用 JOLT 转换来转换输出 JSON。

下面是我的请求 JSON 和输出 JSON。

请求 JSON:


{
  "value": [
    {
      "TypeOfSTA": {
        "Title": "ashish"
      },
      "EndDate": "2007-05-30T18:30:00Z",
      "IGACode": "175",
      "StartDate": "2006-05-31T18:30:00Z",
      "STATenure": "12",
      "TenureUnit": "Month",
      "TotalAmount": "5000",
      "EmpEmailID": "employee175@test.com"
    },
    {
      "TypeOfSTA": {
        "Title": "Rajan"
      },
      "EndDate": "2007-05-30T18:30:00Z",
      "IGACode": "175",
      "StartDate": "2006-05-31T18:30:00Z",
      "STATenure": "12",
      "TenureUnit": "Month",
      "TotalAmount": "5000",
      "EmpEmailID": "employee175@test.com"
    }
  ]
}

请帮助我使用 JOLT 转换进行转换。

输出 JSON:


[
  {
    "TypeOfSTA": "ashish"
    "EndDate": "2007-05-30T18:30:00Z",
    "IGACode": "175",
    "StartDate": "2006-05-31T18:30:00Z",
    "STATenure": "12",
    "TenureUnit": "Month",
    "TotalAmount": "5000",
    "EmpEmailID": "employee175@test.com"
  },
  {
    "TypeOfSTA": "Rajan",    
    "EndDate": "2007-05-30T18:30:00Z",
    "IGACode": "175",
    "StartDate": "2006-05-31T18:30:00Z",
    "STATenure": "12",
    "TenureUnit": "Month",
    "TotalAmount": "5000",
    "EmpEmailID": "employee175@test.com"
  }
]

【问题讨论】:

    标签: json jolt


    【解决方案1】:

    您可以使用下面的 shift 转换规范

    [
      {
        "operation": "shift",
        "spec": {
          "*": {
            "*": {
              "TypeOfSTA": { "*": "&1" },
              "*": "&"
            }
          }
        }
      }
    ]
    

    星号表示最外层数组的名称()、它的索引、TypeOfSTA的索引 em> 对象,其余的键分别存在于数组中。

    &1 表示法用于向上获取相应对象的键的值。

    Jolt Transform Demo 的结果屏幕:

    Apache NiFi's JoltTransformJSON Processor 的结果屏幕:

    EDIT :在前一种情况下,value 数组只有一个元素,以避免与多个元素相关的问题或单个元素,例如。作为一般情况,只需在每个 & 符号前分别添加 [&2][&1],例如

    [
      {
        "operation": "shift",
        "spec": {
          "*": {
            "*": {
              "TypeOfSTA": { "*": "[&2].&1" },
              "*": "[&1].&"
            }
          }
        }
      }
    ]
    

    【讨论】:

    • 您好,Barbaros,感谢您的帮助。我尝试了这个 JOLT 规范,但它不起作用..我低于输出
    • { "TypeOfSTA" : [ "ashish", null ], "EndDate" : [ "2007-05-30T18:30:00Z", "2007-05-30T18:30:00Z" ] ,“IGACode”:[“175”,“175”],“开始日期”:[“2006-05-31T18:30:00Z”,“2006-05-31T18:30:00Z”],“STATenure”:[ “12”,“12”],“TenureUnit”:[“月”,“月”],“TotalAmount”:[“5000”,“5000”],“EmpEmailID”:[“employee175@test.com”, “employee175@test.com”] }
    • 嗨@ashishmaurya 我添加了相关图片以显示正确性。
    • 感谢您的建议我已编辑问题
    • 非常感谢 Babaros。现在我得到了我想要的
    猜你喜欢
    • 1970-01-01
    • 2021-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-01
    • 1970-01-01
    • 2023-01-17
    • 2021-12-02
    相关资源
    最近更新 更多