[rest api 프로젝트 구축] - Bad Request 응답 본문 만들기

geun kim·2023년 3월 24일
0

REST API 구축

목록 보기
6/20

javaBean spec에 만족 해야지만 : serialization , deserialization 모두 가능 하다. <<<< 중요
#desirialization : json -> 객체로 변환
#serialization : 객체 -> json으로 변환

ObjectMapper : 객체를 json으로 변환
@JsonComponent : ObjectMapper에 @JsonComponent 선언 된 Serializer 객체를 자동으로 등록한다.

Errors 객체를 serialization 하기 위한 json component

@JsonComponent
public class ErrorsSerializer extends JsonSerializer<Errors> {
    @Override
    public void serialize(Errors errors, JsonGenerator gen, SerializerProvider serializers) throws IOException {
        gen.writeStartArray();
        errors.getFieldErrors().forEach(e -> {
            try {
                gen.writeStartObject();
                gen.writeStringField("field", e.getField());
                gen.writeStringField("objectName", e.getObjectName());
                gen.writeStringField("code", e.getCode());
                gen.writeStringField("defaultMessage", e.getDefaultMessage());
                Object rejectedValue = e.getRejectedValue();
                if (rejectedValue != null) {
                    gen.writeStringField("rejectedValue", rejectedValue.toString());
                }
                gen.writeEndObject();
            } catch (IOException e1) {
                e1.printStackTrace();
            }
        });

        errors.getGlobalErrors().forEach(e -> {
            try {
                gen.writeStartObject();
                gen.writeStringField("objectName", e.getObjectName());
                gen.writeStringField("code", e.getCode());
                gen.writeStringField("defaultMessage", e.getDefaultMessage());
                gen.writeEndObject();
            } catch (IOException e1) {
                e1.printStackTrace();
            }
        });
        gen.writeEndArray();
    }
}
profile
Devops Load Map

0개의 댓글