티스토리 뷰

프로그래밍

JSON 요소별 문법

★★★☆☆☆ 2020. 5. 13. 10:30

JSON 요소별 문법

대표이미지

|object 객체

{ name1 : value1, …, nameN : valueN }

객체는 일종의 해시 구조로써 포함하는 요소들의 순서가 의미 없는 집합이다.


 ‘{‘ 시작하여 ‘}’로 끝나는 포맷이며, 키에 해당하는 문자열인 name과 값에 해당하는 value는 ‘:’ 흔히 콜론(colon) 기호로 구분된다. 


이러한 하나의 키와 밸류의 콜론으로 구분되는 대응을 쌍(pair)라고 한다. 


해시 객체 안쪽의 ‘이름:값’  pair들은 0개이상 여러 개(0~N)가 올 수 있으며 각각의 pair들은 객체 안에서 ‘,’ 컴마(comma) 기호로 구분된다. 


기호와 값들 사이에 공백문자(space)나 개행문자(return)들은 JSON 텍스트 인식에 영향이 없어 자유롭게 보기 좋은 형식으로 표현하면 된다.


이름은 흔히 큰 따옴표들로 둘러쌓인 “문자열” 형식을 취하며 유니코드 (Unicode)를 문자열 인코딩 형식의 기본으로 한다. {} 처럼 비어있는 해시 객체도 표현 가능하다.


반드시 해시 객체의 키 이름들을 큰따옴표들“”로 둘러쌓을 필요는 없는 경우도 있지만, 여러가지 환경에서의 호환성 등의 이유로 의도적으로라도 그렇게 하기를 권장한다.


JSON 표현에서는 유니코드 UTF-8이 기본 형식이지만, UTF-16, UTF-32도 가능하다. 


아직 유니코드나 표준 ASCII 코드 체계 등에 익숙하지 않은 여러분들을 위하여 앞으로 관련 자료를 준비할 예정이다. 


|array 배열

[ item1, …, itemN ]

배열은 포함하는 값들의 순서화된 컬렉션 구조이다. 즉, 아이템 요소가 위치하는 순서에 의미가 부여된다. 

array는 ‘[‘ (left bracket)로 시작해서 ‘]’ (right bracket)로 끝내는 범위로 표현한다.

 ‘,’ (comma)로 array의 포함되는 요소들을 값으로 구분한다. 

[]처럼 비어있는 배열도 초기에 가능하다. 

값은 다음 절에서 설명하는 모든 것들이 위치 할 수 있다. 

|value 값

객체, 배열, string, number, true | false, null


alue는 JSON 텍스트를 채우는 요소 아이템(Item)으로써 큰따옴표로 묶이는 유니코드 문자열 string, 정수나 실수 등의 숫자로 표기되는 수치값 number, 논리형 boolean 참/거짓 타입(즉 true 혹은 false), 비어있는 값의 형태인 널 null 및 앞에서 설명한 기본 구조인 해시 객체, 배열 리스트들이 모두 여기에 해당된다. 


즉, 값에 위치에는 요소로써 또 다른 객체나 배열이 위치할 수 있다는 것으로, 이를 통해 중첩이나 반복 구조를 표현 할 수 있다. 뒷장에서 설명하겠지만 객체와 배열 형태는 객체 안에 또 객체, 그 안에 배열 또 그 안에 객체.. 등 중첩된(Nested) 구조를 자유롭게 사용할 수 있다. 


이는 복잡한 스키마를 JSON으로 표현할 때는 거의 필수적이다. 그럼, 객체와 배열을 제외한 기본 요소 값들을 하나씩 살펴보자. 


문자열 string

유니코드를 기본으로 표기되는 문자들의 집합으로, 단 하나의 문자(Character)라도 반드시 큰 따옴표들 “”로 둘러싼 문자열로 표기되어야 한다.


UTF-8을 기본 텍스트 인코딩 형식으로 취하며, ‘\\’ 백슬래시 (backslash)가 제어문자(escape character)로 활용된다. 


즉, 포함하는 문자로써 유니코드 중 역슬래시 ‘\\’와 큰따옴표 ‘“‘는 그냥 사용할 수 없다는 뜻이다. 이를 위해서는 반드시 제어문자와 함께 사용해야 JSON 문자열 안에서 표현될 수 있다. 


또한 수치값도 큰따옴표로 둘러 쌓아서 수치를 나타내는 문자열로 표현할 수 있다. 


수치값 number

숫자로 표기되는 수치값인 JSON number는 C와 Java 프로그래밍 언어에서 사용하는 수치 타입과 비슷하며 정수 integer와 고정소수점 실수 float, 부동소수점 실수 double 모두 표현 가능하다. 


다만, 10진수로써의 수치값 표기를 지원하지만, 8진수(octal)나 16진수(hexadecimal) 수치 형식들이 기본적으로 없다는 점에는 주의해야 한다 (가령, 16진수 0xFF는 10진수 255로 저장하거나 문자열형 “0xFF” 등으로 처리함).


논리형 boolean (true | false)

C++의 bool이나 Java의 boolean형 처럼 JSON도 역시 ‘참과 거짓’의 이진 판별 상태를 저장할 수 있는데, true와 false라는 키워드들로 이진 논리형을 표현하도록 지원해주고 있다. 


비어있는 값 null 

널(null) 혹은 닐(nil)은 비워져 있다 empty는 뜻이다. C언어와 같이 포인터변수가 있는 프로그래밍 언어에서는 ‘아직 주소값이 할당되지 않았다’는 것이 일반적인 널의 의미이다. 


일단, JSON에서는 null은 ‘비워져있는 공간’ 정도로 이해하자.


포인터 변수 Pointer Variable


주소를 저장하는 변수로써 일반적인 값이 아니라 해당 값이 위치한 메모리의 주소 번지 address 값을 저장하는 변수이다. 이 포인터 변수를 잘 이용하면 H/W 또한 제어할 수 있는 아주 강력한 코딩을 할 수 있다. C/C++, Objective-C 등의 프로그래밍 언어들에서 빈번하게 사용된다.


'프로그래밍' 카테고리의 다른 글

동적 그래프  (0) 2020.05.15
데이터베이스 타입  (0) 2020.05.14
스키마 정의  (0) 2020.05.14
JSON 기본 구성  (0) 2020.05.12
JSON은 무엇이며, 왜 필요한가?  (0) 2020.05.11
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함