2023/09/18 [TIL] JSON

장현웅·2023년 9월 18일
0

🥚 JSON(JavaScript Object Notation)


앞으로 Json을 계속 볼 것 같으니 개념에 대해서 한 번 짚고 넘어가려한다.

JSON이란

서버 - 서버, 클라이언트 - 서버 간의 데이터를 주고 받기 위한 경량의 데이터 형식

이전에는 댓글 등록과 같은 간단한 조작에도 웹페이지 전체를 다시 불러와야 하는 번거로움이 있었지만 2000년대 초반 AJAX(Asynchronous JavaScript and XML) 기술의 발전으로 웹페이지는 그대로 둔 채, 데이터만 주고 받을 수 있는 기술이 마련되었다.

2001년 더글라스 크록포드(JSON의 아버지)가 Javascript의 Object를 닮은 JSON을 만들었다. 세계 최초의 JSON 송신은 에러가 발생했는데, 그 이유는 'KEY'값으로 사용했던 do라는 변수가 Javascript에서 이미 사용되고 있는 reserved 변수였기 때문이었다. 각 언어마다 이미 사용하고 있는 reserved 변수를 다 고려할 순 없기에 더글라스 크록포드는 KEY값큰 따옴표를 씌움으로써 모든 문제를 해결했다.

자바, 파이썬, 자바스크립트 등 대부분의 현대 언어들이 JSON과 유사한 KEY:VALUE 형태의 자료구조를 가지고 있다.

통신을 위해 이들을 JSON으로 바꾸는 작업을 serialization이라고 하고, 반대로 JSON을 받아서 이들의 자료구조로 만드는 것을 deserialization이라고 한다.

파싱(Parsing)은 deserialization을 포함한 더 넓은 의미로, 데이터를 보고 의미를 해석하는 과정이다.

초기에는 데이터를 교환하는 형식으로 HTML과 비슷하게 생긴 XML이 더 인기가 많았다. JSONKEY:VALUE형태를 사용했지만 XML트리구조를 사용했다.

아직까지도 트리구조와 유사한 사이트맵에는 XML을 사용하고 있지만 그 외에는 JSON이 자료구조도 더 단순하고, 보기에도 더 쉽고, 파싱도 더 빨라서 더욱 널리 사용되고 있다.

JSNO은 python으로 치면 딕셔너리 형테이지만, 실제 딕셔너리가 아닌 그냥 string이다.

Django(장고)로 만든 모델들은 파이썬의 객체 형태로 존재한다.

이 파이썬 객체를 네트워크를 통해서 프론트엔드나 클라이언트로 보내줄 때, 그것을 파이썬의 언어로는 보내줄 수 없고, 받는 것도 물론 그럴 가능성이 크다.

그래서 이것을 JSON의 형태로 바꿔준다. 그러면 어느 클라이언트가 이것을 받던 작업을 하기가 쉽다.

JSON은 키-값 쌍의 집합으로 데이터를 표현하고, 큰 따옴표로 감싸져 있다.

많은 프로그래밍 언어에서 key:value 형태의 자료구조를 가지고 있기 때문에 JSON 형식이 데이터를 교환 및 저장하기에 굉장히 적합한 형태이다.

JSON은 사람과 기계가 모두 이해하기 쉽고 가독성이 높은 형식이다.

이 형식을 지켜서 글자를 보내주면 받은 쪽에서 알맞는 형태로 쉽게 해석을 해서 조작을 할 수 있다.

🐣 JSON 데이터 유형


1. 객체 (Object)

객체는 키-값 쌍의 집합으로 구성되며 중괄호({})로 둘러싸여 있다.
키는 문자열이어야 하고 고유해야 한다.
값은 JSON의 모든 데이터 유형을 포함할 수 있다.

{
	"name" : "Alex",
    "age" : "28",
    "gender" : "male"
}

2. 배열 (Array)

배열은 순서가 있는 값의 리스트로 대괄호([])로 둘러싸여 있다.

["Alex", "28", "male"]

3. 문자열 (String)

"Hi"

4. 숫자 (Number)

1
3.14

5. 불리언 (Boolean)

true
false

6. null

null

🐤 JSON 데이터 쓰면 좋은 점


JSON 데이터는 중첩될 수 있어서 복잡한 데이터 구조를 나타내기 좋다.

{
	"name" : "Alex",
    "age" : "28",
    "gender" : "male"
    "favorit" : ['strawberry', 'beef', 'music']
    "address" : {'city':'SeongNam', 'street' : 'sadfasdfas'}
}

🐥 JSON은 간결하고 가독성이 좋아서 데이터 교환 및 저장에 많이 사용된다.


🥚🐣🐤🐥🐓🐔

0개의 댓글