Netty를 이용해서 웹 소켓 서버를 만들고 클라이언트에서 웹 소켓을 열고 통신을 하다보니

웹 소켓에서는 아직 텍스트 통신만 지원한다.


따라서 양쪽에서 서로 쓰기 좋은 Json 포맷으로 통신하다보니 서버쪽은 자바로 구성되어 Gson 라이브러리를 쓰고,

클라이언트에서 자바스크립트로 Json <-> Object 가 필요해서 찾아보니 내장 객체로 JSON이 있다는 것을 알게 되었다.

(관련 Stack Overflow 글)


JSON Parsing 내장 객체를 지원하는 브라우저는 다음과 같다


(http://caniuse.com/json)


JSON 객체의 함수로는 Object를 Json 문자열로 변환하는 stringify 와 반대로 Json 문자열을 객체로 변환하는 parse 함수가 있다.


JSON에 관한 설명은 MSDN에 잘 나와있어 사용방법에 관한 내용은 생략하고 매개변수에 대한 내용만 스크랩했다.

http://msdn.microsoft.com/ko-kr/library/ie/cc836466(v=vs.94).aspx


1. JSON.stringify(value [, replacer] [,space])

value

필수 요소. JavaScript 값은 일반적으로 변환할 개체 또는 배열입니다.

replacer

선택 사항입니다. 결과를 변환하는 함수 또는 배열입니다.

replacer가 함수이면 JSON.stringify는 키와 각 멤버의 값을 전달하여 함수를 호출합니다. 반환 값은 원본 값 대신 사용됩니다. 함수가 undefined를 반환하면 멤버가 제외됩니다. 루트 개체의 키는 빈 문자열인 ""입니다.

replacer가 배열이면 배열에 키 값이 있는 멤버만 변환됩니다. 멤버가 변환되는 순서는 배열의 키 순서와 같습니다. replacer 배열은 value 인수도 배열인 경우 무시됩니다.

space

선택 사항입니다. 읽기 쉽도록 들여쓰기, 공백, 줄 바꿈 문자를 반환 값 JSON 텍스트에 추가합니다.

space가 생략되면 반환 값 텍스트가 추가 공백 없이 생성됩니다.

space가 숫자이면 반환 값 텍스트가 각 수준의 지정된 공백 수로 들여쓰기됩니다. space가 10보다 크면 텍스트가 10칸 들여쓰기됩니다.

space가 '\t'와 같이 빈 문자열이 아니면 반환 값 텍스트가 각 수준의 문자열의 문자로 들여쓰기됩니다.

space가 10자보다 긴 문자열이면 처음 10자가 사용됩니다.

변환할 객체에 toJSON(key) 함수가 있는 경우 해당 키를 가진 값을 변환하여 반환한다.



2. JSON.parse(value [,reviver])

value

필수 요소. JavaScript 값은 일반적으로 변환할 개체 또는 배열입니다.

replacer

선택 사항입니다. 결과를 변환하는 함수 또는 배열입니다.

replacer가 함수이면 JSON.stringify는 키와 각 멤버의 값을 전달하여 함수를 호출합니다. 반환 값은 원본 값 대신 사용됩니다. 함수가 undefined를 반환하면 멤버가 제외됩니다. 루트 개체의 키는 빈 문자열인 ""입니다.

replacer가 배열이면 배열에 키 값이 있는 멤버만 변환됩니다. 멤버가 변환되는 순서는 배열의 키 순서와 같습니다. replacer 배열은 value 인수도 배열인 경우 무시됩니다.

space

선택 사항입니다. 읽기 쉽도록 들여쓰기, 공백, 줄 바꿈 문자를 반환 값 JSON 텍스트에 추가합니다.

space가 생략되면 반환 값 텍스트가 추가 공백 없이 생성됩니다.

space가 숫자이면 반환 값 텍스트가 각 수준의 지정된 공백 수로 들여쓰기됩니다. space가 10보다 크면 텍스트가 10칸 들여쓰기됩니다.

space가 '\t'와 같이 빈 문자열이 아니면 반환 값 텍스트가 각 수준의 문자열의 문자로 들여쓰기됩니다.

space가 10자보다 긴 문자열이면 처음 10자가 사용됩니다.



+ Recent posts