코드스테이츠 - 3회차 백엔드 부트캠프/Section 2

2022.09.21 수 -JSON

곰돌이볼 2022. 9. 21. 16:31

📄 학습내용

JSON

  • JSON(JavaScript Object Notation)
    • 데이터 교환을 위한 객체 형태의 포맷
    • JSON과 JavaScript의 차이 존재
    • 키와 값 사이의 공백 존재 X
  • 데이터 송수신 가능 조건
    1. 수신자와 발신자가 같은 프로그램 사용
    2. 범용적인 형태의 데이터 송수신 → 대표적인 형태 : JSON
  • 직렬화(serialize) : 객체를 범용적인 형태(JSON)으로 변경하는 과정

 

  • JSON in Java
    • 자바에서 JSON으로 변환된 객체 타입 : 문자열(String)
    • 구현 : jackson 라이브러리의 ObjetMapper 클래스
ObjectMapper mapper = new ObjectMapper();

// TEXT 형식
// null, boolean, String, 배열, HashMap 등 다양한 객체의 타입

// 자바 객체 → JSON 객체
String json = mapper.writerValueAsString(TEXT);

// JSON 객체 → 자바 객체
객체_타입 obj = mapper.readValue(json, 객체타입);

 

stringifyJSON 과제

https://github.com/kung036/be-sprint-stringify-json

 

 

🧶 발생한 문제 및 해결방법

  • 문제점) InterlliJ에서 한글깨짐 에러 발생
error: unmappable character (0xEC) for encoding x-windows-949

// 한글깨짐방지 코드
compileJava.options.encoding = 'UTF-8'

tasks.withType(JavaCompile) {
    options.encoding = 'UTF-8'
}

 

 공부 난이도

JSON ☆☆★★★

 

🎡 페어리뷰

 

🌕 느낀점

  JSON은 큰 내용이 없었지만 자바 객체 타입을 JSON으로 구현하는 과제는 생각보다 시간이 많이 걸렸다. 예전에 배웠던 객체 타입에 대해서 잘 아는 것이 중요했다. 재귀를 사용하려고 최대한 노력했지만 어제 배웠던 재귀적 사고로 구현하지 못한 것이 아쉬웠다. 과제를 제출하고 다른 사람들은 어떻게 코드를 구현했을지 궁금해서 찾아보다가 제일 처음으로 제출한 코드를 보게 되었다. 입력된 값이 Object[]인 경우에 재귀적 사고로 문제를 구현하셨다. 처음에 감탄을 하면서 코드를 분석했고 중간에는 어떻게 동작하는지 이해가 잘 되지 않아서 포기할 뻔(?)했다. 결국 끝까지 이해해서 재귀에 대해 조금(?)은 가까워진 것 같다. 다른 자료구조에 비해서 재귀는 특히 알고리즘 구현이 어렵다. 재귀를 구현하려면 항상 기준, 경우의 수를 생각해서 구현하는 것이 중요한 것 같다. 중첩되서 어떻게 동작하는지 한 눈에 파악하는 것이 어려워서 구현이 어려웠다. 기준!! 경우의 수!! 주의하기!! 같이 과제를 하면서 많이 배운 것 같다.