如何将无名对象转换为 java 中的 JSON(使用 GSON)?
How to convert nameless objects to JSON in java (using GSON)?
我正在使用 gson 为 return 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));
它工作得非常好,并提供了预期的输出。
为什么我如何创建我的对象很重要。两种方法有区别吗?
第一种情况是 returning null 的原因是因为 'customer' 对象的 class 是一个匿名对象 clazz.isAnonymousClass() return true
GSon 实现见下文
我正在使用 gson 为 return 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));
它工作得非常好,并提供了预期的输出。 为什么我如何创建我的对象很重要。两种方法有区别吗?
第一种情况是 returning null 的原因是因为 'customer' 对象的 class 是一个匿名对象 clazz.isAnonymousClass() return true
GSon 实现见下文