๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๊ฐœ๋ฐœ์ƒํ™œ/Java

ObjectMapper ์‚ฌ์šฉ List Mapping

by cocococo331 2022. 11. 28.

ObjectMapper ์‚ฌ์šฉํ•ด์„œ List๋ฅผ ํ•œ๋ฐฉ์— ํŠน์ • ํƒ€์ž…์˜ List<Model>๋กœ ๋งคํ•‘ ์‹œํ‚ฌ ๋•Œ
list <-> list mapping

import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;

...
ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); //์—ฌ๊ธฐ ์„ ์–ธ ์•Š๊ณ  Model ์ชฝ์— lombok annotation ์‚ฌ์šฉํ•ด์„œ ํ•ด์ค˜๋„ ๋œ๋‹ค.
List<ComputeModel> computeList = mapper.readValue(message.getData().toString(), new TypeReference<List<ComputeModel>>() {});
...

 

๋กฌ๋ณต ์–ด๋…ธํ…Œ์ด์…˜์œผ๋กœ FAIL_ON_UNKNOWN_PROPERTIES ์‚ฌ์šฉ ์˜ˆ์‹œ
@JsonIgnoreProperties(ignoreUnknown = true)

 

java 17๋ถ€ํ„ฐ๋Š” ํƒ€์ž… ์ƒ๋žต์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

List<ComputeModel> computeList = mapper.readValue(message.getData().toString(), new TypeReference<>() {});

๊ทผ๋ฐ java8๋กœ ๋‚ฎ์ถฐ์„œ ํ• ๋•Œ๋Š” ํƒ€์ž… ๊ผญ ์ง€์ •ํ•ด์ค˜์•ผํ•œ๋‹ค.

List<ComputeModel> computeList = mapper.readValue(message.getData().toString(), new TypeReference<List<ComputeModel>>() {});

 

์›๋ž˜๋Š” for๋Œ๋ฉด์„œ model์—์„œ ํ•˜๋‚˜์”ฉ ๋งคํ•‘ ์‹œ์ผœ์คซ๋Š”๋ฐ list ํ•œ๋ฐฉ์— ๋งคํ•‘์ด ๋˜๋‹ˆ ๋กœ์ง์ƒ for๋ฌธ ํ•˜๋‚˜ ๊ฑท์–ด๋‚ผ ์ˆ˜ ์žˆ์–ด ์ข‹์•˜์Œ. 

 

String์œผ๋กœ ๋ณ€ํ™˜์„ ํ•ด์ค˜์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์•ž์—์„œ ๋„˜์–ด์˜ค๋Š” ํƒ€์ž…์ด string์ด๋ƒ ์•„๋‹ˆ๋ƒ์— ๋”ฐ๋ผ convertํ•˜๋Š” ๋ถ€๋ถ„์ด ๋‹ค์‹œ ํ•œ๋ฒˆ ๋“ค์–ด๊ฐ„๋‹ค.
API๋งˆ๋‹ค ๋„˜๊ฒจ์ฃผ๋Š” Response Spec์ด ๋‹ฌ๋ผ์„œ ๋‘๊ฐœ ๋ฒˆ๊ฐˆ์•„๊ฐ€๋ฉด์„œ ์‚ฌ์šฉํ–ˆ๋‹ค.

  • mapper.readValue(mapper.writeValueAsString(message.getData()), new TypeReference<list<>>() {});
  • mapper.readValue(message.getData().toString(), new TypeReference<>() {});

 

 

'๊ฐœ๋ฐœ์ƒํ™œ > Java' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

์‹คํ–‰ ์ง€์—ฐ TimeUnit.Sleep  (0) 2023.05.31
char to int  (0) 2023.05.10
[Java] List ๋‚˜๋ˆ„๊ธฐ  (0) 2022.05.23
[Java] Null String Casting  (0) 2022.04.29
[Java] Map ์ œ๊ณต ๋ฉ”์„œ๋“œ๋“ค ์ •๋ฆฌ  (0) 2022.04.26