자바스크립트의 값을 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"
코드스테이츠의 저작권을 보호하기 위해 제출 캡쳐로 대체!
toString()
메소드가 익숙하지 않아서 어렵게 풀었다 🫠 무식한 자의 설움...
int[] arr = {1, 2, 3};
Arrays.toString(arr); // {1, 2, 3}
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 전문가시니까 당연한거라고 정신승리했다.
풀.긴.풀.었.으.니.까.^^!
어제 엔지니어님이 다른 분들이 잘한다고해서 낙담하지 말라는 말씀을 해주셨는데 오늘 굉장히 와닿았다...
낙담하지 말자 화이탱!!!!!!!!!!!!!!!
알고리즘 가보자고