📄 학습내용
JSON
- JSON(JavaScript Object Notation)
- 데이터 교환을 위한 객체 형태의 포맷
- JSON과 JavaScript의 차이 존재
- 키와 값 사이의 공백 존재 X
- 데이터 송수신 가능 조건
- 수신자와 발신자가 같은 프로그램 사용
- 범용적인 형태의 데이터 송수신 → 대표적인 형태 : 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
- 좋은 재귀함수 구현 코드(62행 - 입력된 값이 Object[]일 경우)
https://github.com/Sungho95/be-sprint-stringify-json/blob/main/src/main/java/stringifyJSON.java
🧶 발생한 문제 및 해결방법
- 문제점) InterlliJ에서 한글깨짐 에러 발생
error: unmappable character (0xEC) for encoding x-windows-949
- 해결방법) 참고사이트 : https://os94.tistory.com/169
- build.gradle 파일에 코드 추가
// 한글깨짐방지 코드
compileJava.options.encoding = 'UTF-8'
tasks.withType(JavaCompile) {
options.encoding = 'UTF-8'
}
⭐ 공부 난이도
JSON ☆☆★★★
🎡 페어리뷰
🌕 느낀점
JSON은 큰 내용이 없었지만 자바 객체 타입을 JSON으로 구현하는 과제는 생각보다 시간이 많이 걸렸다. 예전에 배웠던 객체 타입에 대해서 잘 아는 것이 중요했다. 재귀를 사용하려고 최대한 노력했지만 어제 배웠던 재귀적 사고로 구현하지 못한 것이 아쉬웠다. 과제를 제출하고 다른 사람들은 어떻게 코드를 구현했을지 궁금해서 찾아보다가 제일 처음으로 제출한 코드를 보게 되었다. 입력된 값이 Object[]인 경우에 재귀적 사고로 문제를 구현하셨다. 처음에 감탄을 하면서 코드를 분석했고 중간에는 어떻게 동작하는지 이해가 잘 되지 않아서 포기할 뻔(?)했다. 결국 끝까지 이해해서 재귀에 대해 조금(?)은 가까워진 것 같다. 다른 자료구조에 비해서 재귀는 특히 알고리즘 구현이 어렵다. 재귀를 구현하려면 항상 기준, 경우의 수를 생각해서 구현하는 것이 중요한 것 같다. 중첩되서 어떻게 동작하는지 한 눈에 파악하는 것이 어려워서 구현이 어려웠다. 기준!! 경우의 수!! 주의하기!! 같이 과제를 하면서 많이 배운 것 같다.
'코드스테이츠 - 3회차 백엔드 부트캠프 > Section 2' 카테고리의 다른 글
2022.09.27 화 - 의사코드, 시간 복잡도, 탐욕 알고리즘 (0) | 2022.09.27 |
---|---|
2022.09.26 월 - 연결 리스트, 해시 테이블, 힙트리 (0) | 2022.09.26 |
2022.09.23 금 - 그래프, 트리, 이진탐색트리, BFS/DFS (0) | 2022.09.23 |
2022.08.22 목 - Stack & Queue (0) | 2022.09.22 |
2022.09.20 화 - 재귀 (0) | 2022.09.20 |