Преобразование класса Java с вложенным массивом классов Java в JSON
Есть ли удобный способ конвертировать Java-класс с вложенным массивом Java-классов в JSON? Например, я хочу преобразовать экземпляр f следующего класса в JSON:
public class Students {
private final String serial_no;
private final class InnerData {
private final String[] strs;
private final String name;
private final String city;
}
private final StudentList[] students;
}
как
{
"serial_no" : null,
students : [
{
"strs" : ["athlete", "grammarian"],
"name" : "John Smith",
"city" : "Auckland"
},
{
"strs" : ["postmaster", "swimmer"],
"name" : "Jane Doe",
"city" : "Sydney"
}
]
}
Каков наилучший способ сделать это весной? Примеры, с которыми я сталкивался, пока кажутся простыми классами без вложенности.
1 ответ
Для возврата java-объекта в форме JSON из пружинных объектов требуются две простые конфигурации: 1) Добавление зависимости jackson-mapper-asl в путь к классу 2) Добавление аннотации @ResponseBody в метод контроллера
1) Добавление зависимости 'jackson-mapper-asl' в путь к классам
В весеннем проекте mvc нам нужно добавить зависимость 'jackson-mapper-asl' в файл pom.xml, и преобразование объекта в json выполняется по умолчанию.
<dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-asl</artifactId> <version>1.9.10</version> </dependency>
2) Добавьте аннотацию @ResponseBody в метод контроллера
Второе, что нам нужно сделать, это использовать аннотацию @ResponseBody против метода контроллера. Это поможет Spring понять, что возвращаемое значение метода должно быть привязано к телу веб-ответа.
@RequestMapping("studentlist") public
@ResponseBody List<Student> getStudentList() { List<Student> studentList = new ArrayList<Student>(); studentList.add(new Student(23, "Meghna", "Naidu", "meghna@gmail.com", "8978767878")); studentList.add(new Student(3, "Robert", "Parera", "robert@gmail.com", "8978767878")); studentList.add(new Student(93, "Andrew", "Strauss", "andrew@gmail.com", "8978767878")); studentList.add(new Student(239, "Eddy", "Knight", "knight@gmail.com", "7978767878")); return studentList;
}