๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ’ป..Tech..๐Ÿ’ป/๐ŸƒSpring ๐Ÿƒ

Spring์— Jackson Custom Serialization ์ ์šฉ

์Šคํ”„๋ง๋ถ€ํŠธ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ Jackson๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ†ตํ•ด ์ž๋ฐ” ๊ธฐ๋ณธ ์ปฌ๋ ‰์…˜ ๊ฐ์ฒด๋“ค์„ Json์œผ๋กœ Serialize๋ฅผ ์ง„ํ–‰ํ•ด์ค€๋‹ค.

ํ•˜์ง€๋งŒ, ๊ธฐ์กด ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ์— ์žˆ๋˜ ์‚ฌ์šฉ์ž ์ •์˜๊ฐ์ฒด๋ฅผ jsonํ˜•ํƒœ๋กœ ๋ฐ˜ํ™˜ํ•  ์ผ์ด ์ƒ๊ธฐ๋ฉด์„œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.

์‚ฌ์šฉ์ž ์ •์˜๊ฐ์ฒด๋ฅผ ์–ด๋–ป๊ฒŒ Serializeํ•ด์•ผํ• ์ง€ ์ •์˜๋˜์–ด ์žˆ์ง€ ์•Š์•„์„œ ์ƒ๊ธฐ๋Š” ๋ฌธ์ œ์˜€๋‹ค.

 

์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด serializtion์„ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•ํ•ด์„œ objectMapper์— ์ถ”๊ฐ€ํ•˜๊ณ  ์ด๋ฅผ ์Šคํ”„๋ง์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋นˆ ๋“ฑ๋กํ•ด์ฃผ๋Š” ๊ณผ์ •์„ ์ง„ํ–‰ํ–ˆ๋‹ค.

 

์•„๋ž˜ ์ฝ”๋“œ๋Š” HashMap์„ ์ƒ์†๋ฐ›์€ ์‚ฌ์šฉ์ž์ •์˜ DataSet๊ฐ์ฒด๋ฅผ ์ง๋ ฌํ™”ํ•˜๋Š” ๊ณผ์ •์ด๋‹ค.

writeObject()๋ฅผ ํ†ตํ•ด ์žฌ๊ท€์ ์œผ๋กœ ๊ด€๋ จ๋œ ์ง๋ ฌํ™”๋ฅผ ์ง„ํ–‰ํ•˜์—ฌ json ๋ฌธ์ž์—ด์„ ๋งŒ๋“ค์–ด ๋ฐ˜ํ™˜ํ•˜๊ฒŒ ๋œ๋‹ค.

public class DataSetSerializer extends JsonSerializer<DateSet> {

    @Override
    public void serialize(DateSet dataSet, JsonGenerator gen, SerializerProvider serializers) throws IOException, JsonProcessingException {
        gen.writeStartObject();
		
        for (Object o : dataSet.keySet()) {
        	String fieldName = String.valueOf(o);
            	gen.writeFieldName(fieldName);
            	gen.writeObject(dataSet.get(fieldName)); // ์žฌ๊ท€์ ์œผ๋กœ Serializer ํ˜ธ์ถœ
        }

	gen.writeEndObject();
    }
}

  

์ด๋ ‡๊ฒŒ ๋งŒ๋“  Serializer๋Š” ์•„๋ž˜ ์ฝ”๋“œ ์ฒ˜๋Ÿผ module์— ์ถ”๊ฐ€ํ•œ ํ›„ ObjectMapper์— ๋“ฑ๋กํ•ด์ค˜์•ผ๋งŒ ํ•œ๋‹ค.

@Configuration
public class ObjectMapperConfig {

    @Bean
    public ObjectMapper objectMapper() {
        ObjectMapper mapper = new ObjectMapper();
        SimpleModule simpleModule = new SimpleModule();
        simpleModule.addSerializer(DataSet.class, new DataSetSerializer());
        mapper.registerModule(javaTimeModule);
        return mapper;
    }
}

 

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ถ”๊ฐ€๋œ Serializer์˜ ObjectMapper๊ฐ€ ๋นˆ์— ๋“ฑ๋ก๋˜์–ด DataSet๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜์‹œ์—๋„ ์ •์ƒ์ ์œผ๋กœ ์ง๋ ฌํ™”๊ฐ€ ์ง„ํ–‰๋œ๋‹ค.