JavaScript Object Notation
(직역)자바스크립트 객체 표기법(문법)
일반적으로 서버에서 클라이언트로 데이터를 보낼 때 사용하는 양식.
클라이언트가 사용하는 언어에 관계 없이 통일된 데이터를 주고받을 수 있도록, 일정한 패턴을 지닌 문자열을 생성해 내보내면 클라이언트는 그를 해석해 데이터를 자기만의 방식으로 온전히 저장, 표시할 수 있게 된다.
과거 웹 초기 시절부터 사용되어 온 XML은 헤더와 태그 등의 여러 요소로 가독성이 떨어지고, 쓸데없이 용량을 잡아먹는다는 단점이 항상 지적되어 왔다. 이에 대응해 간결하고 통일된 양식으로 각광을 받고 있는 것이 JSON이다.
Javascript 객체 문법
구조화된 데이터를 표현하기 위한 문자 기반의 표준 포맷
웹 어플리케이션에서 데이터를 전송할 때 일반적으로 사용
Javascript 객체 문법을 따르는 문자 기반의 데이터 포맷
Javascript 객체 문법과 매우 유사
Javascript가 아니더라도 JSON을 읽고 쓸 수 있는 기능이 다수의 프로그래밍 환경에서 제공됨.
문자열 형태로 존재 -> 네트워크를 통해 전송할 때 아주 유용
???
데이터에 접근하기 위해서는 네이티브 JSON 객체로 변환될 필요가 있습니다.
Javascript는 JSON 전역 객체를 통해 문자열과 JSON 객체의 상호변환을 지원합니다.
Note:
파싱(Parsing): 문자열에서 네이티브 객체로 변환하는 것
문자열화(Stringification): 네트워크를 통해 전달할 수 있게 객체를 문자열로 변환하는 과정
개별 JSON 객체를 .json 확장자를 가진 단순 텍스트 파일에 저장할 수 있습니다.
JSON은 순수히 데이터 포맷입니다. 오직 프로퍼티만 담을 수 있습니다. 메서드는 담을 수 없습니다.
JSON은 문자열과 프로퍼티의 이름 작성시 큰 따옴표만을 사용해야 합니다. 작은 따옴표는 사용불가합니다.
콤마나 콜론을 잘못 배치하는 사소한 실수로 인해 JSON파일이 잘못되어 작동하지 않을 수 있습니다. JSONLint같은 어플리케이션을 사용해 JSON 유효성 검사를 할 수 있습니다.
JSON은 JSON내부에 포함할 수 있는 모든 형태의 데이터 타입을 취할 수 있습니다. 즉, 배열이나 오브젝트 외에도 단일 문자열이나 숫자또한 유효한 JSON 오브젝트가 됩니다.
자바스크립트에서 오브젝트 프로퍼티가 따옴표로 묶이지 않을 수도 있는 것과는 달리, JSON에서는 따옴표로 묶인 문자열만이 프로퍼티로 사용될 수 있습니다.
--> 제이슨 다뤄보기 하는 중!!!
JSON -> JavaScript
JSON 문자열의 구문을 분석하고,
그 결과에서 JavaScript 값이나 객체를 생성
구문
JSON.parse(JSON 객체)
JSON.parse(JSON 객체, (옵션)reviver)
반환 값
주어진 JSON 문자열에 대응하는 Object.
예제
JSON.parse('{}'); // {}
JSON.parse('true'); // true
JSON.parse('"foo"'); // "foo"
JSON.parse('[1, 5, "false"]'); // [1, 5, "false"]
JSON.parse('null'); // null
JSON.parse('{"p": 5}', (key, value) =>
typeof value === 'number'
? value * 2 // 숫자라면 2배
: value // 나머진 그대로
);
// { p: 10 }
JSON.parse('{"1": 1, "2": 2, "3": {"4": 4, "5": {"6": 6}}}',(key, value) => {
console.log(key);})
//1
//2
//4
//6
//5
//3
'{
"1": 1,
"2": 2,
"3": {
"4": 4,
"5": {"6": 6}
}
}'
JavaScript -> JSON
JavaScript 값이나 객체를 JSON 문자열로 변환
값을 JSON 표기법으로 변환
구문
JSON.stringify(JSON 문자열로 변환할 값)
JSON.stringify(JSON 문자열로 변환할 값, replacer)
JSON.stringify(JSON 문자열로 변환할 값, replacer, space)
반환 값
주어진 값과 대응하는 JSON 문자열.
예제
JSON.stringify({ x: 5, y: 6 });
// "{"x":5,"y":6}"
JSON.stringify([new Number(3), new String('false'), new Boolean(false)]);
// "[3,"false",false]"
JSON.stringify({ x: [10, undefined, function(){}, Symbol('')] });
// "{"x":[10,null,null,null]}"
JSON.stringify(new Date(2006, 0, 2, 15, 4, 5));
// ""2006-01-02T15:04:05.000Z""