我在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 GET请求。
@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()中循环结果,以便在返回结果之前对它们进行反序列化?
使用Jackson的对象映射器,我可以将Java对象序列化为JSON对象。
ObjectMapper mapper = new ObjectMapper();
try {
mapper.writeValue(new File("target/mars.json"), mars);
} catch (IOException e) {
e.printStackTrace();
}
我可能可以将readValue用于相反的过程,但是我不知道如何循环结果。 我将感谢您的帮助。让我知道是否不清楚。
答案 0 :(得分:0)
public List<Planet> getAllPlanets() {
List<Planet> planets = planetService.getAll();
String jsonString = new ObjectMapper().writeValueAsString(planets);
return planets;
}