2021 05 31
2021-05-31¶
Jackson에 대해서¶
- 기본 생성자는 필수다? (JSON->JavaObject)
@Test public void readString() throws JsonProcessingException { final ObjectMapper objectMapper = new ObjectMapper(); String json = "{ \"color\" : \"Black\", \"type\" : \"BMW\" }"; Car car = objectMapper.readValue(json, Car.class); System.out.println(car.toString()); //Car{color='Black', type='BMW'} } class Car { private String color; private String type; public Car() { } public Car(String color, String type) { this.color = color; this.type = type; } public String getColor() { return color; } public String getType() { return type; } @Override public String toString() { return "Car{" + "color='" + color + '\'' + ", type='" + type + '\'' + '}'; } }- 여기에서 기본 생성자 Car()를 빼버리면 직렬화에 실패해버림 (리플렉션을 통해 값을 주입시켜주는 것은 아닐까?)
Cannot construct instance of `Car` (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator) at [Source: (String)"{ "color" : "Black", "type" : "BMW" }"; line: 1, column: 3]- 해결책1. 기본생성자 만들기 - 해결책2. `@JsonProperty` ```java public Car2( @JsonProperty("color") String color, @JsonProperty("type") String type) { this.color = color; this.type = type; } ``` - 해결책3. `@ConstructorProperties`- Getter는 필수다? (JSON->JavaObject)
- 그냥 JavaObject에서는 뻗음
@JsonProperty하면 안뻗음
- Getter는 필수다? (JSON->JavaObject)
@JsonProperty
Swagger¶
- 참고: https://jojoldu.tistory.com/31
// swagger compile group: 'io.springfox', name: 'springfox-swagger2', version: '2.9.2' compile group: 'io.springfox', name: 'springfox-swagger-ui', version: '2.9.2' //SwaggerConfig.java @Configuration @EnableSwagger2 public class SwaggerConfig { @Bean public Docket api() { return new Docket(DocumentationType.SWAGGER_2) .groupName("subway") .select() .apis(RequestHandlerSelectors.basePackage("wooteco.subway")) .paths(PathSelectors.any()) .build(); } }- 각 Controller에
@Api(tags = "설명설명")을 붙여 설명 제공 - PathController 같은 경우 노출을 막기 위해@ApiIgnore설정해둠 - 현재 배포된 Swagger 문서 - https://joel-subway.kro.kr/swagger-ui.html