JSON   JavaScript Object Notation   자바스크립트 객체 표기법

(2023-09-28)

JSON object, JSON 객체, JSONP


1. JSON (JavaScript Object Notation)자바스크립트에서의 객체 표기 방법을 기반으로 한 데이터 형식
     - 다양한 형식의 구조화된 데이터를, 직렬화시킬 수 있는, 텍스트 포멧
        . 각 데이터(토큰)를 `속성(Property)`과 `값(Vaule)`의 쌍으로 표현

  ㅇ 비록 명칭에서 Javascript가 붙었지만, 
     - 자바스크립트 응용 이외에도, 다양한 응용 프로그램 또는 웹 서비스 또는 서버/클라이언트 간의
       가벼운 데이터 교환에 이용됨

  ㅇ 표준 : RFC 8259 (The JavaScript Object Notation (JSON) Data Interchange Format)


2. JSON 특징문법이 직관적이고, 가벼움
  ㅇ 원래는, 웹 서버웹 브라우저자바스크립트 간에 데이터 전송의 수단으로 쓰였음
  ㅇ 현재는,  상에서 구조화된 문서 교환을 위한 공통 포멧으로 정착되고 있음
     - 폭넓은 언어라이브러리에서 지원됨


3. JSON 데이터 형식/형태객체 리터럴 표기법을 기반으로 함
     - 각 데이터(토큰)는, 콜론(:)으로 구분되는, `속성`과 `값`으로 구성 됨

  ㅇ `속성`은, 콜론 좌측에 큰 따옴표(") 로 둘러싸인 문자열
     - 작은 따옴표(') 사용 불가

  ㅇ `값`은, 다음과 같은 종류들이 가능
     - 문자열 : 큰따옴표(")로 둘러싸여 표현됨
     - 숫자   : 그냥 숫자 자체로 표현됨
     - 진리값 : true 또는 false
     - null
     - 배열   : 대괄호([ ])로 둘러싸이며, 각 요소는 쉼표(,)로 구분되어 표현됨
     - 객체   : 중괄호({ })로 둘러싸여 표현됨

  ※ JSON 데이터(토큰) 사이사이에,
     - 띄어쓰기,으로 보기 좋게 표현 가능하나, 주석과 같은 설명문 요소는 불가


4. JSON 데이터 처리를 위한 언어함수/메소드자바스크립트 메소드
     - objJS = parse(jsonString, function (key, value) { })
        . jsonString : JSON 형식의 문자열 (객체 리터럴)
        . key,value : 키,값의 쌍으로된 매개변수
        . JSON 형식 데이터자바스크립트 객체 형식으로 반환
           .. 즉, JSON 데이터자바스크립트 객체 그대로 사용이 가능
     - jsonString = stringify(objJS)
        . 자바스크립트 객체(objJS)를 JSON 형식의 문자열로 변환시켜 줌

  ㅇ PHP 함수
     - PHP 배열 = json_decode(jsonString)
     - jsonString = json_encode(PHP 배열)


5. JSON 사용 例PHP
     - 임의 형식의 데이터
        . 객체 형식 例) aString = { "name1" : "value1" , "name2" : "value2" , ... }
        . 배열 형식 例) aString = [ "name1" : "value1" , "name2" : "value2" , ... ]

     - 임의 (객체 or 배열) 형식의 데이터 -> PHP 배열
        .  $arr = json_decode ( $aString );

     - PHP 배열 -> JSON 형식의 데이터
        .  HTML 헤더 (server -> client)
           
<meta http-equiv='content-type' content='application/json'>
<meta charset='utf-8'>
. echo json_encode ( $arr, JSON_UNESCAPED_UNICODE ); ㅇ Javascript - JSON 형식의 데이터(jsonString) -> 자바스크립트 객체(objJS) . var objJS = JSON.parse ( jsonString ); - 자바스크립트 객체(objJS) -> JSON 형식의 데이터(jsonString) . var jsonString = JSON.stringify ( objJS ); - ajax 호출 例 (client -> server)
 $.ajax({
   url: url,
   type: 'POST',
   contentType:'application/json',
   dataType:'json',
   data: JSON.stringify(obj),
   success: function(result){
     ...
   }
});
6. JSONP (JSON with Padding) ㅇ (동일 출처 정책에 제한 받지 않음) - 타 서버에 저장된 *.js 파일 내에, - 자바스크립트 함수 내 인수로써 저장된 JSON 형식 데이터를 갖고 있으면서, - 클라이언트에 정의된 동일 함수를 실행하면, - 원격 타 서버에 있는 그 함수의 인수(파라미터)로써 데이터가 전달되는 구조 ㅇ 버튼 클릭 등 해당 이벤트가 발생하면, - 타 서버의 스크립트를 가져오기 위한 script 요소를 생성하고, - 원격 타 서버는 JSON 데이터를 포함한 함수 반환값을 클라이언트에 응답하면, - 클라이언트는 그 반환값을 콜백함수에서 처리하는 형태

Ajax
   1. Ajax   2. XMLHttpRequest 객체   3. XHR 프로퍼티,메소드,이벤트   4. JSON  
웹 서비스
   1. 웹 서비스   2. JSON   3. XML   4. SOAP   5. UDDI   6. WSDL   7. OAuth 표준   8. 매쉬업  


Copyrightⓒ written by 차재복 (Cha Jae Bok)               기술용어해설 후원
"본 웹사이트 내 모든 저작물은 원출처를 밝히는 한 자유롭게 사용(상업화포함) 가능합니다"