ObjectMapper๋?
: JSON ํ์์ ์ฌ์ฉํ ๋, ์๋ต๋ค์ ์ง๋ ฌํํ๊ณ , ์์ฒญ๋ค์ ์ญ์ง๋ ฌํ ํ ๋ ์ฌ์ฉํ๋ ๊ธฐ์ ์ด๋ค.
๋ค๋ฅธ ์๋ฒ๋ค๊ณผ ์ํตํ ๋ ๋ณดํต json์ ์ฌ์ฉํ๋ค. ๊ทธ๋์ ์์๋ฌ์ผํจ!
์ง๋ ฌํ(Serialize)
: Object๋ฅผ Textํํ์ JSON์ผ๋ก๋ ๋ณํํด์ค๋ค.
์ญ์ง๋ ฌํ(Deserialize)
: text ํํ์ JSON์ Object๋ก ๋ณํํด์ค๋ค.
SpringBoot์ ๊ฒฝ์ฐ, spring-boot-starter-web์ ๊ธฐ๋ณธ์ ์ผ๋ก Jackson ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์์ด์ Object โ JSON ๊ฐ ๋ณํ์ด ์๋์ผ๋ก ์ฒ๋ฆฌ๋๋ค.
- Jackson ๋ผ์ด๋ธ๋ฌ๋ฆฌ : ์๋ฐ์์ ๊ณ ์์ค์ JSON Parser๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค
- @RestController์์๋, Jackson ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์์ด์ request, response๊ฐ ๋ด๋ถ์ ์ผ๋ก ์ง๋ ฌํ/ ์ญ์ง๋ ฌํ๊ฐ ๋๋ค.
https://github.com/lion0913/community_TDD/commit/16700bee8973228a51cb8eba4e0bf88df884f1f0
Object โ text ๋ณํ
: ๊ฐ์ฒด๋ฅผ Json String์ผ๋ก ๋ณํํ๋ ๊ธฐ๋ฅ
public class Util { public static class json { public static String toJsonStr(Object obj, String defaultValue) { ObjectMapper om = new ObjectMapper(); try { return om.writeValueAsString(obj); } catch (JsonProcessingException e) { return defaultValue; } } } }
โ ๋ด๋ถ ํด๋์ค๋ฅผ ์ฌ์ฉํ ์ด์ ?
Util์๋ ๋ค์ด๊ฐ ๊ธฐ๋ฅ๋ค์ด ๋๋ฌด ๋ง๋ค. ๊ทธ๋์ ํด๋์ฒ๋ผ ๊ด๋ฆฌํด์ผ ํ๋๊ฒ ์ข๋ค.
Util.json.toJsonStr : ์ง๊ด์ ์ธ ํจ์๋ช ์ ํตํด์ ์ด๋ค ๊ธฐ๋ฅ์ธ์ง ์๊ธฐ ํธํ๋ค.(json ๊ด๋ จ ํจ์์์ ์ ์ถ ๊ฐ๋ฅ)
์์ )
@Test void objectMapperTest() throws JsonProcessingException { ArticleDto articleDto = new ArticleDto(1, "์ ๋ชฉ", "๋ด์ฉ"); String jsonStr = Util.json.toJsonStr(articleDto, ""); System.out.println(jsonStr); assertThat(jsonStr).isNotBlank(); assertThat(jsonStr).isEqualTo(""" {"id":1,"title":"์ ๋ชฉ","body":"๋ด์ฉ"} """.trim()); }
Json text โ object ๋ณํ
public static Object toObj(String jsonStr, Class cls, Object defaultVal) { try { return om.readValue(jsonStr, cls); } catch (JsonMappingException e) { return defaultVal; } catch (JsonProcessingException e) { return defaultVal; } }
์์ )
@Test void objectMapperTest_jsonStrToObj() { //json string์ผ๋ก ๋ง๋๋ ๊ณผ์ ArticleDto articleDto = new ArticleDto(1, "์ ๋ชฉ", "๋ด์ฉ"); String jsonStr = Util.json.toJson(articleDto, ""); ArticleDto articleDtoFromJson = (ArticleDto) Util.json.toObj(jsonStr, ArticleDto.class, null); assertThat(articleDto).isEqualTo(articleDtoFromJson); }
์ ๋ค๋ฆญ๊น์ง ์ ์ฉ
๋ ์ ๋ค๋ฆญ์ ์ฌ์ฉํ๋ค๋ ์๋ฏธ T๊ฐ ๋ฆฌํด๊ฐ
class
์ ์๋ฏธ : Tํ์ ์ ํด๋์ค๋ง ํ๋ผ๋ฏธํฐ๋ก ๋ฐ์ ์ ์๋ค https://github.com/lion0913/community_TDD/commit/e098bf69da60a0392bed914d574a7cc18b6973db
public static <T> T toObj(String jsonStr, Class<T> cls, T defaultVal) { try { return (T)om.readValue(jsonStr, cls); } catch (JsonMappingException e) { return defaultVal; } catch (JsonProcessingException e) { return defaultVal; } } //์ด๋ ๊ฒ ํ๋ฉด ArticleDto๋ก ์บ์คํ ํด์ฃผ์ง ์์๋ ๋๋ค ArticleDto articleDtoFromJson = Util.json.toObj(jsonStr, ArticleDto.class, null);
'๐ค study > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] ์๋ฌ์ฒ๋ฆฌ | Try-catch | ์ปดํ์ผ ์ค๋ฅ, ๋ฐํ์ ์ค๋ฅ, ๋ ผ๋ฆฌ ์ค๋ฅ | ์์ธ์ฒ๋ฆฌ ๋ฐฉ๋ฒ | checked, unchecked exception | ์์ธ ์ฐ์ ์์ (0) | 2022.07.23 |
---|---|
[Java] length, size()์ ์ฐจ์ด (0) | 2022.02.19 |
[Java] HashMap์ ๋ฆฌ (0) | 2022.02.15 |
[Java] ์ ๊ท์ ์ ๋ฆฌ (0) | 2022.02.02 |
[Java] ArrayList<Integer>๋ฅผ int[]๋ก ๋ณํํ๋ ๋ฐฉ๋ฒ (0) | 2022.01.28 |