앞으로 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
이 더 인기가 많았다.JSON
은KEY:VALUE
형태를 사용했지만XML
은트리구조
를 사용했다.
아직까지도 트리구조와 유사한 사이트맵에는XML
을 사용하고 있지만 그 외에는JSON
이 자료구조도 더 단순하고, 보기에도 더 쉽고, 파싱도 더 빨라서 더욱 널리 사용되고 있다.
JSNO
은 python으로 치면 딕셔너리 형테이지만, 실제 딕셔너리가 아닌 그냥 string
이다.
Django(장고)로 만든 모델들은 파이썬의 객체 형태
로 존재한다.
이 파이썬 객체를 네트워크를 통해서 프론트엔드나 클라이언트로 보내줄 때, 그것을 파이썬의 언어로는 보내줄 수 없고, 받는 것도 물론 그럴 가능성이 크다.
그래서 이것을 JSON
의 형태로 바꿔준다. 그러면 어느 클라이언트가 이것을 받던 작업을 하기가 쉽다.
JSON은 키-값 쌍의 집합으로 데이터를 표현하고, 큰 따옴표로 감싸져 있다.
많은 프로그래밍 언어에서
key:value 형태의 자료구조
를 가지고 있기 때문에JSON
형식이 데이터를 교환 및 저장하기에 굉장히 적합한 형태이다.JSON은 사람과 기계가 모두 이해하기 쉽고 가독성이 높은 형식이다.
이 형식을 지켜서 글자를 보내주면 받은 쪽에서 알맞는 형태로 쉽게 해석을 해서 조작을 할 수 있다.
객체는 키-값 쌍의 집합으로 구성되며 중괄호({})로 둘러싸여 있다.
키는 문자열이어야 하고 고유해야 한다.
값은 JSON의 모든 데이터 유형을 포함할 수 있다.
{
"name" : "Alex",
"age" : "28",
"gender" : "male"
}
배열은 순서가 있는 값의 리스트로 대괄호([])로 둘러싸여 있다.
["Alex", "28", "male"]
"Hi"
1
3.14
true
false
null
JSON 데이터는 중첩될 수 있어서 복잡한 데이터 구조를 나타내기 좋다.
{
"name" : "Alex",
"age" : "28",
"gender" : "male"
"favorit" : ['strawberry', 'beef', 'music']
"address" : {'city':'SeongNam', 'street' : 'sadfasdfas'}
}
🥚🐣🐤🐥🐓🐔