ModelMapper:如何将这个json映射到Java?

时间:2014-09-20 16:50:10

标签: java json gson modelmapper

我正在尝试使用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);

1 个答案:

答案 0 :(得分:1)

在审核了您的意思以及您对问题的评论之后,这很可能是他们实施中的错误。 ValueReader声明的javadoc

  

返回源对象的所有成员名称,如果源没有成员,则返回null

但是,使用此方法的唯一代码PropertyInfoSetResolver#resolveAccessors(...)不会检查是否存在null。 JSON中的成员名称仅对对象有意义,但是,在这里,您有一个JSON数组。这就是它失败的原因。

据我所知,代码不检查null,也不检查没有成员的source类型。我认为这是一个错误。通过用数组类型替换任何字段(和相应的JSON),可以从示例示例轻松地重现该错误。您可能想联系开发人员或更改库。