Custom Serialize

๊ธฐ๋ณธ์ ์ธ ๋„๋ฉ”์ธ๋“ค์€ ์ž๋ฐ” ๋นˆ ์ŠคํŽ™์„ ๋”ฐ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— BeanSerializer์— ์˜ํ•ด์„œ Serialize/Deserialize๊ฐ€ ๊ฐ€๋Šฅ ํ•˜๋‹ค.(ObjectMapper)

ํ•˜์ง€๋งŒ Error์™€ ๊ฐ™์ด ๋นˆ ์ŠคํŽ™์„ ๋”ฐ๋ฅด์ง€ ์•Š์•„ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ฑฐ๋‚˜ Custom Serialize๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, @JsonComponent์™€ JsonSerialzer<>๋ฅผ ์ƒ์†๋ฐ›์•„ serialize๋ฅผ overriding ํ•ด์ฃผ์ž.

@JsonComponent
public class LongToStringSerializer extends StdSerializer<Long> {

    @Override
    public void serialize(Long val, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
        jsonGenerator.writeString(val.toString());
    }
}
@JsonComponent
public class ErrorsSerializer extends JsonSerializer<Errors> {
    @Override
    public void serialize(Errors errors, JsonGenerator gen, SerializerProvider serializerProvider ) throws IOException {
        gen.writeFieldName("errors"); //error๊ฐ์ฒด ์ด๋ฆ„
        gen.writeStartArray();        //error๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ ์ผ ์ˆ˜ ์žˆ์œผ๋‹ˆ Arrayํ˜•ํƒœ
        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 ex){
                ex.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 ex){
                ex.printStackTrace();
            }
        });
        gen.writeEndArray();
    }
}

Last updated