我有以下课程:
public class A{
List<AA> aaList;
public A(List<AA> aaList){
this.aaList = aaList;
}
//getters and setters + default constructor
public class AA {
String aaString;
public AA(String aaString){
this.aaString = aaString;
}
//getters and setters + default constructor
}
}
我想要两个同一类的对象,比方说:
A a = new A(Arrays.asList(new A.AA(null)));
A a2 = new A(Arrays.asList(new A.AA("test")));
当我把a
映射到a2
时,a2
应该保持test
,因为a
有一个null
。
如何使用Orika
?
我试过这样的方法:
mapperFactory.classMap(A.AA.class, A.AA.class)
.mapNulls(false)
.byDefault()
.register();
mapperFactory.classMap(A.class, A.class)
.mapNulls(false)
.customize(new CustomMapper<A, A>() {
@Override public void mapAtoB(A a, A a2,
MappingContext context) {
map(a.getAAList(), a2.getAAList());
}
})
.byDefault()
.register();
提前谢谢
下面是一个修改过的代码片段,对我很有效:
mapperFactory.classMap(A.class, A.class)
.mapNulls(false)
.customize(new CustomMapper<A, A>() {
@Override
public void mapAtoB(A a, A a2, MappingContext context) {
// 1. Returns new list with not null
List<A.AA> a1List = a.getAaList().stream()
.filter(a1 -> a1.getAaString() != null)
.collect(Collectors.toList());
// 2. Merges all the elements from 'a2' list into 'a' list
a1List.addAll(a2.getAaList());
// 3. Sets the list with merged elements into the 'a2'
a2.setAaList(a1List);
}
})
.register();
请注意,。默认情况下,应删除()
,以便自定义映射器正常工作。
考虑2个对象: 与orika-mapper: 然后以下测试失败: 这是因为已成为空数组列表。为什么会这样?另一件非常值得注意的事情是:如果我用内容填充这两个列表,映射甚至会发生!虽然它们是不同类型的! 就是 与 和 成功。人们能指望这一点吗?这安全吗?
我有一个对象带有字段
假设我有一个由n个字符串列表组成的列表: result->包含所有输出列表(所有组合) current->是当前的组合 用上述相同示例调用此函数时的输出:
鉴于 和 如何在Orika中映射以下内容? 我需要定制的映射器或过滤器吗?
问题内容: 有人告诉我 编写一个函数square(a),该函数接受一个数字数组a并返回一个包含每个平方值的数组。 起初,我有 但是,由于我正在打印,而且没有像被问到的那样返回,因此这不起作用。所以我尝试了 但这仅平方我数组的最后一个数字。我如何才能使整个列表平方? 问题答案: 您可以使用列表理解: 或者您可以: 或者,您可以使用发电机。它不会返回列表,但是您仍然可以迭代它,并且由于不必分配整个新列
我正在使用Jackson 2.4将对象序列化为JSON。 当我序列化对象列表时,如果某些元素为空,则结果字符串包含一些“空”字符串。 如何防止元素被序列化?是否有任何配置?我已经设置了! 下面是我的代码: 连载之后我得到了这个: