둘러보기 메뉴
검색
바뀐글
임의글
개인 도구
가입하기
로그인
도움말
도움말
질문게시판
자주 묻는 질문
커뮤니티
실시간 채팅방
가입인사게시판
자유게시판
뉴스게시판
제재안게시판
최근 토론
페미위키
공지사항
개선 요청
바뀐글
임의글
파일 올리기
다면 분류 목록
특수 문서 목록
JSON 문서 원본 보기
이름공간
문서
토론
주시
도구
여기를 가리키는 문서
가리키는 글의 최근 바뀜
문서 정보
위키베이스 항목
행위
보기
읽기
원본 보기
역사 보기
←
JSON
문서 편집 권한이 없습니다. 다음 이유를 확인해주세요.
요청한 명령은 다음 중 하나의 권한을 가진 사용자에게 제한됩니다:
사용자
,
Seeders
.
문서를 고치려면 이메일 인증 절차가 필요합니다.
사용자 환경 설정
에서 이메일 주소를 입력하고 이메일 주소 인증을 해주시기 바랍니다.
문서의 원본을 보거나 복사할 수 있습니다.
'''JSON'''(''Javascript Object Notation'')은 특정 [[프로그래밍 언어|언어]]로부터 완벽하게 독립적이고 [[XML]]보다 가벼운 데이터 교환 형식으로, 사람이 읽기 쉽고, 프로그램도 읽고 쓰기 참 쉬운 언어이다. [http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf ECMA 262]에 일부 토대를 두고 국제 표준 [http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf ECMA 404]에 기반한다.<ref>http://json.org/json-ko.html</ref> [[JavaScript]]에서 다음과 같이 객체를 생성 해본적이 있다면 참 쉽게 쓸 수 있다. <syntaxhighlight lang="ecmascript">var a={a:"sss",b:false};</syntaxhighlight> == 구조 == * [[이름]]과 값 형태의 쌍들로 이루어진 콜렉션 <ref>잘 이해가 안 되면 객체 또는 구조체의 속성(속성 이름,속성 값)이나 C#의 KeyValuePair<,>에 빗대어 이해하면 된다.)</ref> * 값들의 순서화된 리스트<ref>이해가 잘 안 되면 배열에 빗대어 이해해보자.</ref> 보다시피 이것들은 여러 [[프로그래밍 언어]]에서 쉽게 구현할 수 있으며, 이에 따라 여러 프로그래밍 언어에서 쉽게 JSON을 구현하거나 사용할 수 있다. (e.g. C#의 Newtonsoft.Json) (다만 Brainfuck같은 언어는 제외) JSON에서 중요한 거 두 가지가 있다.바로 객체 (object)와 배열 (array)이다. === 객체 (object) === object는 위에서 말한 이름과 값 형태의 쌍들의 비순서화된 모음이다. {로 시작하고 }로 끝난다. 각 이름 끝에 :를 붙이고 쌍과 쌍 사이는 ,로 구분한다. 자바스크립트의 객체와는 약간 차이가 나는데, 이름에도 큰따옴표를 붙이는게 원칙이다. 붙이지 않아도 당장 오류를 뱉지는 않는 경우가 많지만, 받는 프로그램에 따라 다를 수 있으므로 되도록이면 붙이도록 하자. 예시<br /><pre>{"name":"Example","email":"example@example.com"}</pre> === 배열 (array) === array는 값들의 순서화된 collection이라고 첫 번째 출처에서 나와 있는데 그냥 순서 있고 자료형을 따지지 않는 배열로 보면 된다. [로 시작하고 ]로 끝낸다. 값과 값 사이의 구분은 object와 마찬가지로 ,로 한다. 예시<br /><pre>["abc","ㄱㄴㄷ","12345","aaaaaaaaaaaaaa~!"]</pre> ===값에 올 수 있는 값들=== *문자열 *숫자 *객체(위에 object) *배열(위에 array) *참/거짓 (true와 false) *null ====string 간단 설명==== 길이 0 이상의 유니코드 문자열을 의미한다. 이스케이프 시퀸스들은 C계열 언어와 같이 \(백슬리쉬)로 시작된다. 하나의 문자도 하나의 문자열로 표현된다. (char도 string으로 표현된다.) {| class="wikitable" |- !이스케이프 시퀸스 !의미+부연설명 |- |\" |큰따음표 |- |\\ |역슬래쉬 |- |\/ |슬래쉬 |- |\b |백슬래쉬 |- |\f |Form feed |- |\n |개행 |- |\r |캐리지 리턴 |- |\t |수평 탭 |- |\uXXXX |문자 U+XXXX, XXXX애는 16진수 네자리가 온다. (e.g. \u12FF를 하면 [http://www.fileformat.info/info/unicode/char/12ff/index.htm ዿ]가 출력된다.)) |} ====number 주의사항==== 소수도 쓸 수 있는데 8진수나 16진수는 안 되고 무조건 10진수만 쓸 수 있다. =JSON 예시= <pre> { "name":"Kildong Hong", "email":"kildong.hong@example.com", "wanted":{"wantedjob":"chicken master","wantednow":"lottery"}, "ate":["빠삐코","팽이팽이","보석바","죠스바","갈비","삼겹살","치킨","피자","콜라",{kind:"간장치킨",withbones:false},"...등등등"], "wantedscore":100 } </pre> == 각 언어별 사용법 == === [[JavaScript]] === 기본적으로 JSON이 Javascript Object Notation의 준말인 만큼, 자바스크립트에서 JSON을 사용하는 방법은 간단하다. eval()을 사용하는 방법과 JSON.parse()를 사용하는 방법이 있다. 추천하는 방법은 후자. ==== eval()을 사용 ==== <syntaxhighlight lang="ecmascript"> var jsonStr = '{"a":"asdf"}'; var obj; eval('obj='+jsonStr); console.log(obj); //Object {a: "asdf"} </syntaxhighlight> 이렇게 하면 obj에 {a: "asdf"} 라는 객체가 대입된다. 그러나 eval은 본래 문자열을 자바스크립트의 코드로 실행시키는 함수이다. 만약 누가 악의적인 코드를 json대신에 당신에게 보냈고, 그것을 eval로 실행하게 되면? [[답이 없다]]. 그래서 자바스크립트는 보다 안전하게 JSON을 자바스크립트의 객체로 만들 수 있는 함수를 제공하는데, 그것이 JSON.parse()이다. ==== JSON.parse()를 사용 ==== <syntaxhighlight lang="ecmascript"> var jsonStr = '{"a":"asdf"}'; var obj; obj = JSON.parse(jsonStr); console.log(obj); </syntaxhighlight> 앞 문단과 같은 동작을 하는데, JSON이 아닌 코드가 들어가면 오류를 뱉어내므로 안전하게 사용할 수 있다. 그리고 미묘하게 더 편하다. ==== [[node.js]]에서 JSON파일 불러오기 ==== node.js역시 위의 두 가지 방법을 이용하여 JSON을 불러올 수 있는데, 가끔 JSON 파일(일반적으로 .json 확장자를 가지는)을 불러올 필요가 있다. 이 때는 require()를 사용하면 된다. 일반적으로 [[모듈]]을 불러올 때 사용하지만, json파일 역시 읽어올 수 있다. <syntaxhighlight lang="ecmascript"> var obj; obj = require('./jsonFile.json'); console.log(obj); </syntaxhighlight> 같은 폴더의 jsonFile.json이라는 파일 내의 json을 파싱하여 obj에 넣어준다. ==출처== <references /> {{분류:분류수정중}} {{프로그래밍}} [[분류:마크업 언어]] [[분류:Ecma 표준]]
이 문서에서 사용한 틀:
틀:프로그래밍
(
원본 보기
)
분류:분류수정중
(
원본 보기
)
JSON
문서로 돌아갑니다.
다른 언어