Десериализовать объект JSON из MongoDB в объект Java по запросу GET - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть несколько вложенных классов в 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 для противоположного процесса, но я не знаю, как зациклить результаты.Я буду признателен за помощь.Дайте мне знать, если что-то не понятно.

1 Ответ

0 голосов
/ 12 февраля 2019
  public List<Planet> getAllPlanets() {
      List<Planet> planets = planetService.getAll();
      String jsonString = new ObjectMapper().writeValueAsString(planets);
      return planets;
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...