본문으로 바로가기
링크허브 공식블로그

연동이 쉬워진다

링크허브 공식블로그

현대리가 생각하는 IT

JSON (JavaScript Object Notation) 기초

JSON



JSON은 JavaScript Object Notation의 약자로서 다른 언어간에 객체를 전달하는 포맷으로 많이 사용됩니다. 주로 클라이언트 서버에서 객체 정보를 전송할때 사용됩니다. JSON은 경량의 DATA 교환 형식으로 JSON의 형식은 사람이 읽고 쓰기에 용이하며, 기계가 분석하고 생성함에도 용이 합니다. JSON은 완벽하게 언어로 부터 완전히 독립적이지만 C, C++, C#, Java, JavaScript, Python 그 외 다수 프로그램에서 지원하는 텍스트 형식 입니다. 


JSON은 두개의 구조를 기본으로 두고있습니다.

  1. name/value 형태의 쌍으로 collection 타입, 다양한 언어들에서는 object, recored, struct, dictionary, hash table, 키가 존재하는 list 로 표현됩니다.
  2. 값들은 순서화된 리스트, 대부분의 언어들에서는 이는 array, vector, list 또는 squence로서 표현됩니다.

자바스크립트를 이용한 JSON 표현

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<head>
        <title>JSON Basic</title>
        <meta charset="utf-8"/>
</head>
<body>
        <script>
                /* Array and Object Definition  */
                var arr = [ "HyunJIn"28"Korea""Computer Science" ];
                var obj = { "NAME" : "HyunJIn""AGE" : 28"UNIVERSITY" : "JNU""MAJOR" : "Computer Science" };
 
                /* Array and Object Value Check */
                document.write("<b>Normal String Arrary :</b> ", arr, "<br/>");
                document.write("<br/><b>Normal Object</b><br/>");
                for(var objVarName in obj) {
                        document.write(objVarName, " : ", obj[objVarName], "<br/>");
                }
        </script>
</body>
cs


소스코드 실행 페이지. 일반적인 JavaScript 배열과 객체


chrome 개발자 도구를 사용해 확인한 모습


JSON을 Object로 변환

JSON의 또다른 특징은 객체 자체를 문자열로 바꿀 수 있다는 특징이 있습니다. 이객체 정보를 가진 문자열을 다른 언어나 서버로 던져서 다시 사용이 가능합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<head>
        <title>JSON Basic</title>
        <meta charset="utf-8"/>
</head>
<body>
        <script>
                /* JSON Definition */
                var json = '{ "NAME" : "Hyunjin", "AGE" : 28, "UNIVERSITY" : "JNU", "MAJOR" : "Computer Science" }';
 
                /* JSON Parse and Check */
                var jsonObj = JSON.parse(json);
                document.write("<br/><b>JSON Object</b><br/>");
                for(var objVarName in jsonObj) {
                        document.write(objVarName, " : ", jsonObj[objVarName], "<br/>");
                }
 
                /* JON Object to JSON String */
                var jsonStr = JSON.stringify(jsonObj);
                document.write("<br/><b>JSON String Format :</b> ", jsonStr, "<br/>");
        </script>
</body>
cs


JSON Parser를 사용해 생성한 객체와 그 객체를 stringify()를 통해 JSON Format으로 만든 모습


위 예제에서 두개의 메소드가 사용 되었습니다.

  1. JSON.parse(str)
    - JSON 포맷의 문자열을 객체로 변환 시켜주는 함수
  2. JSON.stringify(obj)
    - 객체를 JSON 포맷의 문자열로 변환 시켜주는 함수
사실 클라이언트에서만 사용하는 이 예제에서는 큰 의미가 없어 보이지만 다른 언어로 객체의 정보를 보내거나 자바스크립트의 Ajax를 사용할 때 매우 유용합니다.


language 별 로 JSON을 다루는 방법을 정리한 사이트>> 클릭


JSON In 링크허브 SDK

저희 팝빌 SDK API를 이용하여 reqeust를 요청할때 전문형식은 JSON 메시지 포맷이며, Response를 줄때도 JSON형식의 String값을 반환합니다.  


세금계산서 발행(Issue)시 요청전문과 응답전문 예시


PHP Taxinvoce SDK

json_encode함수를 이용해서 객체를 json 표현으로 변환해서 executeCURL(request)함수를 호출 합니다.


Ruby Taxinvoce SDK

to_json함수를 이용해서 Ruby Object를 json표현으로 변환 후 httppost(reqeust) 함수를 호출 합니다.


 이 외 언어 C#, Java, VBA, Delphi 등 링크허브 SDK는 JSON 형식의 포맷의 데이터로 변환 후 request를 처리합니다. 




대부분의 언어는 JSON 포맷을 지원합니다. 과거 버전의 php 및 Powerbuilder등 언어 자체적으로 JSON 함수를 제공하지 않는 경우도 있습니다. 하지만 JSON을 핸들링 할 수 있는 많은 라이브러리들이 존재하며 개발자 툴이 이를 표준으로 받아들이고 있으며 점차 탄력이 붙고 있기 때문에 대부분 환경에서 사용이 가능한 메세지 포맷입니다. 

JSON은 XML과 비교가 많이 됩니다. XML은 문서의 양이 필요이상으로 많이 차지 합니다. (실제 데이터가 아닌 tag글자) 또한 배열 형식이나 반복구조의 경우 불필요한 데이터가 계속 해서 나타납니다. 반면에 JSON은 내용이 함축적이며 최소한의 정보만을 가지고 있으며 객체구조 {} 와 배열구조 []의 적절한 이용으로 효율적인 데이터 구성이 가능합니다.  

'현대리가 생각하는 IT' 카테고리의 다른 글

Percent Encoding  (0) 2018.07.26
CSS - Padding 과 Margin  (0) 2018.07.19
HTTP에서의 압축  (0) 2018.07.08
C# 데이터타입 및 Nullable 형식  (0) 2018.07.05
  • Today
  • Total