带有映射的自定义JOLT转换

时间:2018-11-19 17:51:11

标签: java json jolt

可以使用JOLT或其他Java api进行这种Json转换,并在转换后获取映射结果

示例

  • name:是人的名字
  • 父母:也是人的名字

将所有人(姓名和父母)从 Paul 更新为 Evan

输入

{
   "persons":[
      {
         "name":"Paul",
         "adress":"abcd",
         "parent":"Chris"
      },
      {
         "name":"Jean",
         "adress":"abcd",
         "parent":"Paul"
      }
   ]
}

输出

{
   "persons":[
      {
         "name":"Evan",
         "adress":"abcd",
         "parent":"Chris"
      },
      {
         "name":"Jean",
         "adress":"abcd",
         "parent":"Evan"
      }
   ]
}

有人可以帮忙编写此Transformation的规范,以及如何在Transformation之后获得映射结果

映射(Paul-> Evan)

1 个答案:

答案 0 :(得分:0)

一种实现此目的的方法是使用以下规范:

[
  {
    "operation": "shift",
    "spec": {
      "persons": {
        "*": {
          "name": {
            "Paul": {
              "#Evan": "persons.[&3].name"
            },
            "*": {
              "@(2,name)": "persons.[&3].name"
            }
          },
          "parent": {
            "Paul": {
              "#Evan": "persons.[&3].parent"
            },
            "*": {
              "@(2,parent)": "persons.[&3].parent"
            }
          },
          "*": "persons.[&1].&"
        }
      }
    }
  }
  ]