[section 2] 자료구조(1) - stringify 구현 실습

수경·2022년 11월 18일
0

코드스테이츠

목록 보기
25/57

JSON.stringify()

자바스크립트의 값을 JSON 문자열로 반환

JSON: Java Script Object Notation

인자값의 타입에 따른 반환

1. String

JSON.stringify("hello");	// ""hello""

2. Integer

JSON.stringify(3);	// 3

3. Boolean

JSON.stringify(true);	// "true"
JSON.stringify(false);	// "false"

4. Object[ ]

JSON.stringify(new Object[]{8});	// "[8]"
JSON.stringify(new Object[]{8, "hello"});	// "[8,"hello"]"

5. HashMap

HashMap<Object, Object> map = new HashMap<>(){{
            put("foo", true);
            put("bar", false);
            put("baz", null);
        }};
JSON.stringify(map);	// "{"bar":false,"foo":true,"baz":null}"

6. null

JSON.stringify(null);	// "null"

JSON 공식 문서


실습 과제물

코드스테이츠의 저작권을 보호하기 위해 제출 캡쳐로 대체!

삽질

toString() 메소드가 익숙하지 않아서 어렵게 풀었다 🫠 무식한 자의 설움...

  1. 배열 ➡️ String
int[] arr = {1, 2, 3};
Arrays.toString(arr);	// {1, 2, 3}
  1. HashMap ➡️ String
HashMap<Integer, String> arr = new HashMap<>(){{
	put(1, "one");
    put(2, "two");
	put(3, "three");
}};
arr.toString();	// {1=one, 2=two, 3=three}

그리고 해시맵... 저장한 순서를 유지하는 해시맵이 있는 줄도 몰랐다!
LinkedHashMap 이다!
LinkedHashMap을 사용하면 이 문제에서 입력한 순서대로 반환하는게 수월하다!

이걸 몰라서 직접 [요소1,요소2] {key1:value1,key2:value2} 형식을 구현했다 🥹
이제 알았으니.. 열심히 복습...고...


회고

일단 처음에 stringify() 가 뭔지 모르기도 했고, 참고 자료를 읽어도 도저히 어떻게 만들라는건지 이해가 안돼서 한참을 헤맸다.
자바에서와 다르게 JSON은 타입을 따로 구분해주지 않아도 사용할 수 있다는 편리성까지만 이해를 했다.
stringify()에서 뭘 해야할 지 모르겠어서 공식 문서를 봤는데

🤯 ??? 뭐요 ?????

아침에 그 비몽사몽한 정신으로 알아먹기가 힘들었다. 이제 생각해보면 그냥 냅다 문자열로 만들어서 넘기라는 것 밖에 없는데!

뭐 어찌저찌 이해해서 코딩을 하기 시작했다.

String 타입이 들어오면 해당 문자열을 "" 로 한번 더 묶어서 반환해야 하는데, 도저히! 정말 도!저!히! 생각이 안났다.

🤔 뭔가 그냥 앞뒤에 " 를 붙여서 반환하는게 아닐텐데... 뭔가 함수가 있을텐데.... 이렇게 구리다고?(?)

결국 어쩔 수 없이 생각나는 대로 인자값의 앞뒤에 " 를 붙여서 반환했는데...... 맞았다...............
음 글쿠나....... 별거 없구나..... 냅다 붙이면 되는구나......... 하하
그동안 고민했던 시간이 아까울 정도였다 ^^..

하나를 해결하고 나니까 다른 건 그래도 금방 해결했다.

문제는 Object 배열타입HashMap 이었다.
일단 Object 배열의 각 요소가 Integer가 올지, String이 올지, Boolean이 올지, 배열이 올지, 해시맵이 올지 그 어떤 것도 알 수 없었다.
그래서 배열의 요소 하나하나에 접근해서 다시 재귀로 호출해줘야 하는데,
지금까지 C에서는 무조건 배열에 접근할 때 배열명[index] 로 접근을 했지만, 지금까지 Java로 코딩할 때 String 배열에서 배열명[index] 로 접근을 할 수가 없었다!(가 내 착각이었음. 접근 가능함~^^)
그래서 아! 배열의 요소가 참조값이면 이렇게 접근하면 안 되는 구나~ 라는 엄청난 오류를 범했다 ^^^^^^^ (심지어 페어분께 안 된다며 별 같지도 않은 주장을 펼침)
하 이거때문에 ArrayList도 써보고 iterator로 돌리다가 실패도 하고 결국 향상된 for문으로 만들었다.

그.런.데

(오후 줌 세션 중)
🧑🏻‍💻 : 여러분! 여기서는 for문을 쓰면 되겠죠? 인덱스에 접근해서 Object[] data 니까 data[i] 이런식으로 접근하면 쉽.게. 가능합니다~~
🫢 : ???에????.................하 페어분께 사과하러 가야지.........

^^....... 뇌절 and 뇌피셜 대박이라고 곧 소문날 듯... 이래서 안 된다고 이유나 대지말걸 ^^...

< 오늘의 교훈 : 나대지 말자! >

^^..... 부끄러워서 죽는줄.......

하튼 그래도 시간 안에 풀긴 풀었다.
Object 배열 타입을 풀고나니 HashMap도 비슷한 방법으로 바로 풀었다.
오후 줌 세션에서 엔지니어님이 30분만에 풀이 + 코드 간결한 거 보고 현타 제대로 맞긴 했는데,
나는 배우는 사람이고 엔지니어님은 경력자 and 전문가시니까 당연한거라고 정신승리했다.

풀.긴.풀.었.으.니.까.^^!

어제 엔지니어님이 다른 분들이 잘한다고해서 낙담하지 말라는 말씀을 해주셨는데 오늘 굉장히 와닿았다...

낙담하지 말자 화이탱!!!!!!!!!!!!!!!
알고리즘 가보자고

profile
어쩌다보니 tmi뿐인 블로그😎

0개의 댓글