我正在尝试使用ModelMapper来映射以下json,如此处所解释的http://modelmapper.org/user-manual/gson-integration/但是我得到一个NullPointerException并且我无法弄清楚出了什么问题。有什么提示吗?
{"a": "aaa", "b": [{"c": "ccc"}]}
public class Foo {
private String a;
private ArrayList<Bar> b;
}
public class Bar {
private String c;
}
ModelMapper mapper = new ModelMapper();
mapper.getConfiguration().addValueReader(new JsonElementValueReader());
JsonElement responseElement = new JsonParser().parse(json);
Foo foo = mapper.map(responseElement, Foo.class);
答案 0 :(得分:1)
在审核了您的意思以及您对问题的评论之后,这很可能是他们实施中的错误。 ValueReader
声明的javadoc
返回源对象的所有成员名称,如果源没有成员,则返回
null
。
但是,使用此方法的唯一代码PropertyInfoSetResolver#resolveAccessors(...)
不会检查是否存在null
。 JSON中的成员名称仅对对象有意义,但是,在这里,您有一个JSON数组。这就是它失败的原因。
据我所知,代码不检查null
,也不检查没有成员的source
类型。我认为这是一个错误。通过用数组类型替换任何字段(和相应的JSON),可以从示例示例轻松地重现该错误。您可能想联系开发人员或更改库。