【发布时间】:2016-04-18 20:02:13
【问题描述】:
当我运行以下命令时,我看到一个空响应“{}”。 Employee 类有一个列表,我认为这是导致问题的原因。请问您能告诉我如何克服这个问题吗?
public class ServiceValidationTest {
private Gson gson;
public ServiceValidationTest() {
this.setGson(new GsonBuilder()
.excludeFieldsWithoutExposeAnnotation()
.registerTypeHierarchyAdapter(byte[].class,
new GsonByteArrayHandler())
.registerTypeHierarchyAdapter(boolean.class,
new GsonBooleanHandler())
.registerTypeHierarchyAdapter(Date.class,
new GsonDateHandler())
.create());
}
public static void main(String[] args) throws Exception{
List<Grade> grades = new ArrayList<Grade>();
grades.add(new Grade("1"));
grades.add(new Grade("2"));
grades.add(new Grade("3"));
grades.add(new Grade("4"));
Employee employee = new Employee();
employee.setGrades(grades);
employee.setName("someone");
System.out.println(new ServiceValidationTest().getGson().toJson(employee));
}
public Gson getGson() {
return gson;
}
public void setGson(Gson gson) {
this.gson = gson;
}
}
员工类
package com.test;
import java.util.List;
public class Employee {
private String name;
private List<Grade> grades;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<Grade> getGrades() {
return grades;
}
public void setGrades(List<Grade> grades) {
this.grades = grades;
}
}
等级
package com.test;
public class Grade {
public Grade(String grade) {
super();
this.grade = grade;
}
private String grade;
public String getGrade() {
return grade;
}
public void setGrade(String grade) {
this.grade = grade;
}
}
编辑
我发现下面的代码导致了这个问题。如果如果声明 new gson() 并使用 gson 对象,则它按预期工作 -
this.setGson(new GsonBuilder()
.excludeFieldsWithoutExposeAnnotation()
.registerTypeHierarchyAdapter(byte[].class,
new GsonByteArrayHandler())
.registerTypeHierarchyAdapter(boolean.class,
new GsonBooleanHandler())
.registerTypeHierarchyAdapter(Date.class,
new GsonDateHandler())
.create());
【问题讨论】: