<요약> 

1. json이란?

2.직렬화(json은 문자열로 보낸다.)

3. json 문법형식

4.json 표현법 예시

5. python에서 직렬화 예시

 

 

1. JSON이란? 

 

 

Java Script Object Notation 의 약자
(자바 스크립트 객체 표기법) 즉, 데이터 표현식이다. 

즉,

데이터 송수신을 자바스크립트 문법으로 표현된 객체로서 수행할 수 있게 하는 가벼운 문자열 데이터 표현식 이다. 

(자바스크립트를 사용하지 않아도 쓸 수 있음) 

(공식문서)

 

 

웹상에서  Client와 Server는 다음과 같은 항목을 주고 받는다. 

1. html (구조를 나타내는)

2. css (스타일을 표현하는)

3. javascript (논리를 구현하는)

 

이런 스타일과 로직 없이 데이터만 주고 받기 위해 JSON을 쓴다. 

 

 

 

2. 직렬화 (json은 문자열로 보낸다.) 

 

JSON으로 데이터를 주고 받을때 그냥 JSON형태로 주고 받아도 괜찮을까? 

JSON은  javascript으로 만든 표현식 (객체)이지만  javascript를 모르는 사람은 어떻게 알 수 있을까? 

 

JSON은 표현하고자 하는 데이터를 문자열로 변환해서 전송을 한다.

이것을 직렬화(Serialization)라고 한다.

때문에 어느 프로그램,언어를 막론하고 데이터를 통신,주고 받을 수 있다.

 

반대로 요청한 데이터를 JSON객체 형태로 받는 것을 역 직렬화 라고 한다. 

 

 


3. JSON 문법 형식 

 

JSON은 python의 Dictionary  비슷하다. 

name : value 로 구성되어 있고, 중괄호 { }를 사용한다. 

숫자, 문자(열), Boolean, 배열, 객체로 구성이 가능하다.

 

예시 구조를 보자. 

json_example = {
    "string_name": "something",
    "number_name": 3,
    "null_name": null,
    "bool_name": true
}

 

 

4. 예시와  JSON을 직렬화로 보내기

 

일기 no.1

제목 : 오늘 일찍 일어났다. 
본문 : 일찍 졸렸다. 

 

 

라는 예시를 JSON 형식으로 나타내면 다음과 같다. 

{
    "id" : 3,
    "title : "오늘 일찍 일어났다.",
    "body" : "오늘 일찍 졸렸따." 
}

 

 

이 예시를 그냥 보내면 언어 막론하고 다 알아볼까? 
자바스크립트를 문자열로 직렬화해줘서 보내야 한다. 

 

정리하자면,
데이터를 보낼 때 JSON을 문자열로 바꾸어 보내고

데이터를 받을 떄 문자열을 JSON으로 바꾸어 받는다. 

 

5. Python 에서 JSON 다루기

 

python에서 JSON을 다루려면 먼저 맨위에 import json을 써줘야 한다. 

 

import json

 

 

다음과 같이'diary'라는 이름의 파이썬 자료형인 딕셔너리가 있다. 

 

diary = {
    "id": 3,
    "title": "Hi orange",
    "body": "good",
}

print(diary)
print(type(diary))

 

output

{'id': 3, 'title': 'Hi orange', 'body': 'good'}
<class 'dict'>

 

 

이것을 직렬화 해주려면 json.dums()를 써주면 된다. 

 

diary_s =  json.dumps(diary)
print(diary_s)
print(type(diary_s))

 

output

{"id": 3, "title": "Hi orange", "body": "good"}
<class 'str'>

 

보시다시피 자료형이 딕셔너리에서 문자열로 바뀐 것을 볼 수 있다. 

 

역직렬화는 json.loads()를 써주면 된다. 

 

diary_back = json.loads(diary_s)
print(diary_back)
print(type(diary_back))

 

output

 

{'id': 3, 'title': 'Hi orange', 'body': 'good'}
<class 'dict'>

'Django > REST Framwork' 카테고리의 다른 글

3. Httpie  (0) 2019.12.16
2. HTTP method  (0) 2019.12.14

+ Recent posts