如何在Json中使用复杂的对象结构实现默认构造函数?

时间:2013-11-15 12:11:21

标签: java json junit

我和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

1 个答案:

答案 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;
    }
}

(在上面的例子中,构造函数不做任何事情,因此可以删除)。

希望这可以提供一些帮助。