数据编织 Pojo 到 Pojo 的映射

Data Weave Pojo to Pojo Mappings

我正在尝试执行如下所示的 Pojo 到 Pojo 转换(每个 Pojo 都有一个对象列表)- 输出已转换但正在跳过一个对象- 下面是示例代码。

public class Pojo1 implements Serializable {

 private List<Foo> fooList =new ArrayList<Foo>(1);

 public Pojo1() {
 }

 public List<Foo> getFooList() {
     return fooList ;
 }

 public void setFooList(List<Foo> fooList) {
     this.fooList= fooList;
 }

}

public class Pojo2实现Serializable {

    private List<Bar> barList =new ArrayList<Bar>(1);

    public Pojo2() {
    }

    public List<Bar> getBarList() {
        return barList ;
    }

    public void setBarList(List<Bar> barList) {
        this.barList= barList;
    }

}

DataWeave 转换如下 - 这工作正常,但列表中只有一个对象被转换,我错过了第二个。

   barList: [{
   ( 
       payload.fooList map {
           item1:$.item1                
       }
   )
   } as :object {
        class :"com.fooClass"
   }]
   } as :object {
       class : "com.barClass"
   }

提前致谢!

试试

{
  barList: in1.fooList map {
    item1: $.item1
  } as :object {class : "com.fooClass"}
} as :object {class : "com.barClass"}

注意:as :object {class : "com.fooClass"}应该是可选的,因为可以推断


问题似乎是您定义了一个仅包含 one objectarray 并用以下结果填充该对象:

payload.fooList map {
  item1:$.item1                
}

这是一个对象数组:

[
  {
    item1: "value1"
  },
  {
    item1: "value2"
  }
]

用它填充对象后,结果如下:

{
  item1: "value1",
  item1: "value2",
  item1: ...
}

因此,您正在用一个包含大量重复字段(具有不同值)的对象填充数组,并且在写入输出时(因为它是 java),这些字段中的每一个都只获得一个值.