首页 > 解决方案 > 带有映射的自定义 JOLT 转换

问题描述

可以使用JOLT或者其他java api做这种Json Transformation,并得到转换后的映射结果

例子

将所有人员(姓名和父母)从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"
      }
   ]
}

有人可以帮助编写此转换的规范,以及我们如何获得转换后的映射结果

映射(保罗->埃文)

标签: javajsonjolt

解决方案


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

[
  {
    "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].&"
        }
      }
    }
  }
  ]

推荐阅读