Я вижу пустой ответ «{}», когда я запускаю ниже. Класс Employee имеет список, который, как я полагаю, вызывает проблему. пожалуйста, дайте мне знать, как я могу это преодолеть?GSON - преобразовать объект, который имеет общий список в строку JSON
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;
}
}
РЕДАКТИРОВАТЬ
Я понял, что приведенный ниже код вызывает проблему. В случае если объявить новый gson() и использовать объект gson, он работает, как ожидалось -
this.setGson(new GsonBuilder()
.excludeFieldsWithoutExposeAnnotation()
.registerTypeHierarchyAdapter(byte[].class,
new GsonByteArrayHandler())
.registerTypeHierarchyAdapter(boolean.class,
new GsonBooleanHandler())
.registerTypeHierarchyAdapter(Date.class,
new GsonDateHandler())
.create());