Java 如何使用Jolt变换数组?

Java 如何使用Jolt变换数组?,java,json,jolt,Java,Json,Jolt,在尝试转换以下内容时,转换对象的值为空: { “雇员”:[ {“f_name”:“tom”,“l_name”:“smith”}, {“f_name”:“don”,“l_name”:“jones”} ] } 为此: { “雇员”:[ {“姓氏”:“汤姆”,“姓氏”:“史密斯”}, {“姓”:“堂”,“姓”:“琼斯”} ] } 这是我正在使用的规范: List<Object> chainrSpecJSON = JsonUtils.classpathToList("path/

在尝试转换以下内容时,转换对象的值为空:

{
“雇员”:[
{“f_name”:“tom”,“l_name”:“smith”},
{“f_name”:“don”,“l_name”:“jones”}
]
}
为此:

{
“雇员”:[
{“姓氏”:“汤姆”,“姓氏”:“史密斯”},
{“姓”:“堂”,“姓”:“琼斯”}
]
}
这是我正在使用的规范:

List<Object> chainrSpecJSON = JsonUtils.classpathToList("path/spec.json");
Chainr chainr = Chainr.fromSpec(chainrSpecJSON);
Object inputJSON = JsonUtils.classpathToObject("path/input.json");

Object transformed = chainr.transform(inputJSON);
System.out.println(transformed);
[
{
“操作”:“移位”,
“规格”:{
“雇员”:{
“f_name”:“firstName”,
“姓氏”:“姓氏”
}
}
]
这是我正在使用的代码:

List<Object> chainrSpecJSON = JsonUtils.classpathToList("path/spec.json");
Chainr chainr = Chainr.fromSpec(chainrSpecJSON);
Object inputJSON = JsonUtils.classpathToObject("path/input.json");

Object transformed = chainr.transform(inputJSON);
System.out.println(transformed);

那么我需要做什么来转换employee对象数组呢?

这个规范满足您的需要

[
  {
    "operation": "shift",
    "spec": {
      "employees": {
        "*": {
          "f_name": "employees[&1].firstName",
          "l_name": "employees[&1].lastName"
        }
      }
    }
  }
]

关键是你需要使用“*”循环遍历employees数组的所有元素,然后当你递归/匹配f_name和l_name时,你需要使用[&1]引用索引数组,这意味着在树上查找两个级别,0然后1,并在输出中将其用作索引数组。

有没有办法不指定“employees”在
employees[&1]
中(比如重复使用匹配的密钥)?是的“f_name”:“&2[&1].firstName”