자바스크립트 오브젝트 노테이션
데이터 교환을 위한 객체 형태의 포맷
자바스크립트 포함한 많은 언어에서 범용적으로 사용하고 있다
ObjectMapper/writeValue()
jackson 라이브러리의 ObjectMapper클래스로 JSON형태로 변환 할 수 있다
Map<String, String> msg ->
ObjectMapper 객체의writeValueAsString(msg) 메서드
= String 타입의 JSON포멧 완성(직렬화)
String json = "{\"createdAt\":\"2023-05-11,12:23:11\",\"receiver\":\"김됴됴\",\"sender\":\"Rinn\",\"message\":\"죽어가고있다\"}";
readValue()
Map<<String, String> msg = transfer.readValue(json, Map.class);
= String 타입의 JSON포멧을 Map의 Value로(역직렬화)
//{createdAt=2023-05-11,12:23:11, receiver=김됴됴, sender=Rinn, message=죽어가고있다}
주의: 키-값 쌍 사이에는 공백이 있어서는 안 된다.
Json형식으로 데이터를 포멧하는 코드 작성 실습을 하였다

각각 null값, String값 맨 아래 그 외의 값을 처리하는 코드를 작성했다
Integer값에대한 리턴코드도 작성했으나 그 외의 값 처리 코드와 중복되어 주석처리 하였다

배열을 값으로 받았을 때의 코드이다. ArrayList로 변환하여 리턴했다.
새로 알게된 사실이 있는데 ArrayList를 String으로 변환하면 자동으로 "[]"가 붙어 이를 막기 위해 join()을 써야 했다
pair분은 StringBuilder를 사용하였든데 편리해 보였다
배열의 각 요소를 String으로 변환하는데 stringify()의 재귀함수를 사용하였다. 재귀함수가 꼭 수많은 반복을 하는곳에만 쓸 필요는 없는거였다..

마지막은 HashMap을 값으로 받았을 때의 코드이다
처음에 null값과 boolean값을 처리하기 위해 조건식을 만들었다가 깨달음을 얻고 주석처리 후 재귀함수를 사용하여 새로 작성하였다.
개념을 이해 못하고 무작정 따라하기만 하니까 똑같은 작업도 반복적으로 틀리는 것같다
fork clone 으로 받은 레포지토리는 자동으로 remote가 된다
ERROR: Write access to repository not granted.
과제 작성 후 push를 했는데 레포지토리 쓰기 권한이 없다고 오류가 났다
알고보니 디렉터리가 fork한 내 레포지토리가 아니라 원 레포지토리로 연결되어 쓰기요청을 하고있었다.. 이유는 모르겠지만
해결을 위해 remote remove후 재연결을 시켜주었다
원본을 가지고 있는 사람에게 pull request는 말 그대로 수정을 했으니 원본에 수정해주세요 라는 요청서 발행이다.. 이 당연한걸 이해를 안하고 했으니 업데이트에 편의상 나오는 request&compare버튼이 없다고 사소하게 고생을 했다
🍠🍠🍠
오늘의 삽질
1. clone로 복제하고 java소스파일의 main시행이 안되어 애를 먹었다.
테스트 케이스포함 Run이 비활성화되어 있었다. 무슨이유인지 import java.util.*; 도 비활성화 되어있었다 Edit Configurations를 설정하라는데 아무리 찾아도 프로젝트빌드 버튼 옆에 구성선택?창이 없어서 꽤 해맸다. 솔직히 이건 어떻게 해결했는지 모르겠다 이것저것 하니까 어느새 해결되어있었다
(https://nirsa.tistory.com/364 이분의 포스팅을 참고했다)
2. 파일 인코딩을 모두 UTF-8로 설정했음에도 지속적으로 한글이 깨져서 고생했다.
[Help] - [Edit Custom VM Options...]에
-Dfile.encoding=UTF-8
-Dconsole.encoding=UTF-8
를 추가하자 오류가 없어졌다
(https://beemiel.tistory.com/4 이분의 포스팅을 참고했다)
3. 프로젝트 SDK를 실수로 15로 바꿨다가 복구가 안됬다
문자열로 `"` 를 추가하고싶아서 `"""` 라고 쓰니 버전이 낮아 텍스트블록을 쓰지 못한다고 SDK를 15로 바꾸라길래 바꿨더니 언어수준이 버전에 맞지 않는다고 오류가 났다. 버전을 JDK 20으로 높혔는데도 변하는게 없었다. 큰따옴표를 \"로 입력하는법을 알아내서 버전을 다시 프로젝트 설정에서 11로 바꿨는데 언어수준이 버전에 맞지 않는다라는 오류만 났다..
멘탈데미지를 받고 전체 파일을 Git에서 다시 pull했다
마침내 해결되었다 만만세
4.과제를 진행하며
Section 1과 달리 가이드라인이 너무 단촐해져서 뭘 하라고 의도하는지 몰라 시작에 애를 먹었다. 여기선 페어분한데 도움을 받았다. 감을 잡은 이후로는 서칭을 통해 나름 선전했다
앞에서 대충 기본 배웠으니 이정도는 이해할 수 있지? 라는 느낌이었다
무섭구만 무서워