猿问

如何在java中将无名对象转换为JSON(使用GSON)?

我正在编写一个使用 gson 返回 JSON 对象的程序,我发现了一些奇怪的东西。基本上,当我想将以下对象转换为 JSON 时,它给了我 null。


Customer customer = new Customer() {

    {

        setId(1);

        setName("Foo bar");

        setAddress("Some Address");

    }

};

System.out.println(gson.toJson(customer));

客户看起来像这样


public class Customer{

    int id;

    String name;

    String address;

    public int getId() {

        return id;

    }

    public void setId(int id) {

        this.id = id;

    }

    public String getName() {

        return name;

    }

    public void setName(String name) {

        this.name = name;

    }

    public String getAddress() {

        return address;

    }

    public void setAddress(String address) {

        this.address = address;

    }   

}

但是当我正确创建对象时


Customer customer = new Customer();

customer.setId(1);

customer.setName("Foo bar");

customer.setAddress("Some Address");

System.out.println(gson.toJson(customer));

它工作得很好,并按预期输出。为什么我如何创建对象很重要?两种方法有区别吗?


猛跑小猪
浏览 93回答 1
1回答

茅侃侃

第一种情况返回 null 的原因是“客户”对象的类是匿名类,clazz.isAnonymousClass() 返回 true参见下文了解 Gson 的实现
随时随地看视频慕课网APP

相关分类

Java
我要回答