У меня есть несколько вложенных классов в Java, упрощенное здесь.Существуют геттеры и сеттеры.
Пример
public class Planet {
@JsonProperty("name")
private String name;
@JsonProperty("moons")
private List<Moon> moons;
}
public class Moon {
@JsonProperty("moonname")
private String name;
@JsonProperty("craters")
private int craters;
}
Я хочу иметь возможность десериализовать записи в mongo (следуя этой же структуре) для объектов java на контроллере остальных, в частности HTTP GETrequest.
@RestController
@RequestMapping("/planets")
public class PlanetController {
@Autowired
private PlanetService planetService;
@RequestMapping("/")
public List<Planet> getAllPlanets() {
//Need to deserialize here
return planetService.getAll();
}
@RequestMapping("/{name}")
public Planet getItemsWithName(@PathVariable("name") String name) {
//deserialize here
return planetService.getEntryWithName(name.toLowerCase());
}
PlanetService.getAll () ожидает тип возвращаемого значения List.getEntryWithName () ожидает возвращаемый тип Planet.
Как я могу зациклить результаты в getAll (), чтобы я мог десериализовать их до того, как они будут возвращены?
Используя сопоставитель объектов Джексона, я могувыполнить сериализацию объекта Java в объект JSON.
ObjectMapper mapper = new ObjectMapper();
try {
mapper.writeValue(new File("target/mars.json"), mars);
} catch (IOException e) {
e.printStackTrace();
}
Я, вероятно, могу использовать readValue для противоположного процесса, но я не знаю, как зациклить результаты.Я буду признателен за помощь.Дайте мне знать, если что-то не понятно.