JSON은 왜 필요한가 ??
JavaScript Object Notation의 줄임말로 데이터 교환을 위해 만들어진 객체 형태의 포맷이다.
const message = {
sender: "BE-KID",
receiver: "FE-KID",
message: "저녁에 낙성대 공원 산책 ㄱ?",
createdAt: "2022-01-17 15:10:10"
}
네트워크를 통해, 위와 같은 객체의 내용을 다른 프로그램에 전송한다고 했을 때 정상적으로 전송이 가능하려면 발신자와 수신자가 같은 프로그램을 사용하거나 문자열처럼 범용적으로 읽을 수 있는 형태여야 한다.
객체는 타입 변환을 이용해 String으로 변환할 경우에 객체 내용을 포함하지 않는다. JavaScript에서 객체에 메소드 ( message.toString()
)나 형변환 ( String(message)
)을 시도하면 [object Object] 라는 결과를 리턴한다.
이 문제를 해결하는 방법
JSON.stringify
: Object type을 JSON으로 변환 - 직렬화 (serialize)JSON.parse
: JSON을 Object type으로 변환 - 역직렬화 (deserialize)JSON은 서로 다른 프로그램 사이에서 데이터를 교환하기 위한 포맷이다. 그리고 JSON 포맷은 자바스크립트를 포함한 많은 언어에서 범용적으로 사용하는 유명한 포맷이다.
자바스크립트의 객체와 별반 다를 바가 없어 보이지만 미묘하게 다른 규칙이 있다.
자바스크립트 객체
JSON
추가적으로 알아보라고 주어진 내용이 있는데 다음 내용이다.
메모리 사용량은 재귀 함수를 사용하면 코드는 아름다워지지만 제대로 탈출을 하지 못하면 프로그램이 터져버릴 위험이 있다는 점. 호출될 때 마다 스택에 함수가 쌓이기 때문.. 그래서 이런 문제를 해소하기 위해 등장한 것이 꼬리 재귀.
꼬리 재귀는 재귀 호출을 리턴문에서 하지 않고 미리 호출한 뒤에 변수에 저장하고 리턴문에서 사용하는 방식이다. 계속해서 스택에 쌓이는 것을 보완하기 위해 생각해낸 방식인듯 하다.
하노이의 탑 재귀 문제는 예전에 몇번 풀어보았다.
조합 재귀 함수는 뭔가 했더니 백트래킹으로 조합 구하는 것을 말하는 것 같다.