【问题标题】:Data Weave Pojo to Pojo Mappings数据编织 Pojo 到 Pojo 映射
【发布时间】:2015-11-25 21:58:49
【问题描述】:

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

提前致谢!

【问题讨论】:

    标签: mule mule-component dataweave


    【解决方案1】:

    试试

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

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


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

    payload.fooList map {
      item1:$.item1                
    }
    

    这是一个对象数组:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-03
      • 1970-01-01
      • 1970-01-01
      • 2017-01-31
      • 1970-01-01
      • 1970-01-01
      • 2017-02-24
      相关资源
      最近更新 更多