我和json和junit一起工作。我想用Json创建一个复杂的对象结构,但是我无法创建这个结构,因为我得到了这个例外:
使用Gson注册InstanceCreator可以解决此问题。
问题是,json结构中的一个java类没有默认构造函数。我找到了这个主题的介绍:
http://google-gson.googlecode.com/svn/tags/1.2.3/docs/javadocs/com/google/gson/InstanceCreator.html
这是java类,但我现在不知道如何以正确的方式创建默认构造函数。这是一个尝试,但它会产生编译错误:
public ProductModel{
private Product product;
// My new default constructor, but it doesn´t work
public ProductModel() {
this(Product.class);
}
public ProductModel(final Product product) {
super();
this.product = product;
}
}
感谢您的帮助!
格尔茨 Marwief
答案 0 :(得分:1)
默认构造函数与无参数构造函数相同。默认构造函数是隐式的,直到您自己声明一个。 在您的代码片段中,您尝试使用(默认)其他具有无效类型的构造函数。 Person类与Person类的实例(对象)不同。因此,您必须创建一个实例,如下所示:
public ProductModel{
private Product product;
public ProductModel() {
this(new Product());
}
public ProductModel(final Product product) {
super();
this.product = product;
}
}
GSon需要一个默认构造函数,因此您可能需要提供另一种方法来提供ProductModel。建议可以是init方法
public class ProductModel {
private Product product;
public ProductModel() {
}
public void init(Product product){
this.product = product;
}
}
(在上面的例子中,构造函数不做任何事情,因此可以删除)。
希望这可以提供一些帮助。