@RestController автосериализует POJO - PullRequest
1 голос
/ 16 января 2020

У меня есть приложение Spring mvc, с @RestController, например, таким:

@RestController
@RequestMapping("levels")
public class LevelController {

  private final GetLevelOneCount getLevelOneCount;

  private final GetLevelTwoCount getLevelTwoCount;

  private final GetLevelThreeCount getLevelThreeCount;

  @Inject
  public LevelController(GetLevelOneCount getLevelOneCount, 
      GetLevelTwoCount getLevelTwoCount,
      GetLevelThreeCount getLevelThreeCount) {
    this.getLevelOneCount = getLevelOneCount;
    this.getLevelTwoCount = getLevelTwoCount;
    this.getLevelThreeCount = getLevelThreeCount;
  }


  @GetMapping("/level1/{id}")
  public LevelModel levelOne(@PathVariable String id) throws SQLException {
    LevelModel levelOneModel = new LevelModel();

    levelOneModel.setLevelQuery(getLevelOneCount.execute(id));
    levelOneModel.setLevelDirQuery(getLevelOneCount.executeDir(id));
    levelOneModel.setLevelDateQuery(getLevelOneCount.executeDate(id));

    return levelOneModel; 
}

my LevelModel - это POJO с закрытыми переменными, теперь мне интересно, можно ли это сериализовать в propper JSON с приватными переменными?

package com.pwc.tag.service.levels;

public class LevelModel {

    private Long LevelQuery;

    private Long LevelDirQuery;

    private Long LevelDateQuery;

    public Long getLevelQuery() {
        return LevelQuery;
    }

    public void setLevelQuery(Long levelQuery) {
        LevelQuery = levelQuery;
    }

    public Long getLevelDirQuery() {
        return LevelDirQuery;
    }

    public void setLevelDirQuery(Long levelDirQuery) {
        LevelDirQuery = levelDirQuery;
    }

    public Long getLevelDateQuery() {
        return LevelDateQuery;
    }

    public void setLevelDateQuery(Long levelDateQuery) {
        LevelDateQuery = levelDateQuery;
    }
}

1 Ответ

5 голосов
/ 17 января 2020

Да, ваш объект будет сериализован в правильную структуру JSON, включая закрытое поле, из-за методов получения и установки .

Если эти поля не должны присутствовать в выходном объекте, вы можете добавить аннотацию @JsonIgnore, чтобы исключить их из структуры JSON.

PS Общий подход заключается в запуске имен java свойств со строчной буквой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...