** 참고 사이트 **

http://www.json.org/
https://www.geeksforgeeks.org/javascript-json-stringify-with-examples/
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/JSON

JSON( JavaScript Object Notation )

  • Server to Server 또는 Server to browser 와 같이 서로 다른 시스템 사이에서 정보를 전달하는 형식.
  • JSONObject : { "Key":value } 타입으로 데이터를 표현
  • JSONArray : [value1,value2, ..] 타입으로 데이터를 표현
  • value 데이터 타입 : 기본자료형, 배열, 객체 (단, function 정보는 담을수 없음.)

** JS **

1) JS 자체에서 JSON 내장 객체를 가지고 있고, 주요 기능 'JSON.parse()', 'JSON.stringfy()'

(1). JSON.parse()'
=> 문자열을 JSON으로서 구문 분석하고, 선택적으로 분석 결과의 값과 속성을 변환해 반환.

var jsonString = '{"name": "BAKHJ", "age":"19"}'; // tyepof String
var jsonObject;

jsonObject = JSON.parse(jsonString); //  typeof Object
// {name: "BAKHJ", age: "19"}

(2). JSON.stringify()
=> 주어진 값에 해당하는 JSON 문자열을 반환합니다. 선택 사항으로 특정 속성만 포함하거나 사용자 정의 방식으로 속성을 대체합니다.

var obj = {name: "BAKHJ", addr: function(){ return '서울';}}; 
var jsonObj = {name: "BAKHJ", addr: '서울'};
var jsonArr = ["Mon","Tue","Wen"];

/* Object != JSON 이 다르다는 것을 알 수 있음 */
JSON.stringify(obj);
// "{"name":"BAKHJ"}"  addr() 함수는 직렬화 할수 없음.

/* JSON Object */
JSON.stringify(jsonObj);
// "{"name":"BAKHJ","addr":"서울"}"

/* JSON Array */
JSON.stringify(jsonArr);
// "["Mon","Tue","Wen"]"

/* 아래와 같이 서버에 전송할 경우 서버에서 Json parsing을 하지 못함.
   전송시는 String 형태로 변경되어 전송됨.*/
jsonObj.toString();
// "[object Object]"