1

我正在尝试进行 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;
 }

}

公共类 Pojo2 实现可序列化 {

    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"
   }

提前致谢 !

4

1 回答 1

2

尝试

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

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


问题似乎是您array只定义了一个 withone object并用以下结果填充该对象:

payload.fooList map {
  item1:$.item1                
}

这是一个对象数组:

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

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

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

因此,您正在用一个具有许多重复字段(具有不同值)的对象填充数组,并且当写入该输出时(因为它是 java),这些字段中的每一个都只会得到一个值。

于 2015-08-31T13:01:29.223 回答