일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- java
- django ORM
- 파이썬
- es6
- CSS
- js
- DRF
- 알고리즘 문제
- Django
- AWS
- django widget
- react
- 장고
- c++
- 파이썬 알고리즘
- 알고리즘
- MAC
- web
- Baekjoon
- 백준
- form
- Algorithm
- API
- HTML
- 알고리즘 연습
- 알고리즘 풀이
- Git
- PYTHON
- javascript
- django rest framework
- Today
- Total
수학과의 좌충우돌 프로그래밍
[Django] django rest framework 를 위한 JSON 기초 본문
DRF 라고 불리는 django rest framework
를 학습하기 이전에 기초적인 내용에 대해 알아보고자 합니다.
JSON
JSON 은 JavaScript Object Notation 의 줄임말로서 데이터의 송수신을 자바스크립트 객체로서 수행할 수 있게끔 하는 가벼운 문자열 데이터 표현식입니다.
JSON 이 등장하기 이전에는 XML 이 그 역할를 독차지 하고 있었습니다. 하지만 XML 은 비교적 크기가 무겁다는 이유로 요즘은 JSON 이 더 많은 지분을 확보하고 있습니다.
XML 이란?
eXtensible Markup Language 의 줄임말로서 html 과 많이 비교됩니다. 둘의 결정적인 차이는 html 은 테그들을 통해서 데이터를 표현하는 마크업 언어이고 XML 은 데이터를 설명하는 마크업 언어입니다. json 과 마찬가지로 웹상에서 주고 받는 데이터입니다.
JSON 은 다음과 같이 사용합니다.
{
"squadName": "Super hero squad",
"homeTown": "Metro City",
"formed": 2016,
"secretBase": "Super tower",
"active": true,
"members": [
{
"name": "Molecule Man",
"age": 29,
"secretIdentity": "Dan Jukes",
"powers": [
"Radiation resistance",
"Turning tiny",
"Radiation blast"
]
},
{
"name": "Madame Uppercut",
"age": 39,
"secretIdentity": "Jane Wilson",
"powers": [
"Million tonne punch",
"Damage resistance",
"Superhuman reflexes"
]
}
]
}
JSON 에 대한 자세한 설명은 아래 링크에서 확인할 수 있습니다.
http://www.json.org/json-ko.html
django 에서의 JSON
그렇다면 JSON 이 django 에서 어떻게 쓰일까요?
django rest framework
전까지는 클라이언트의 요청에 대해 서버는 우리가 잘 알고 있는 html, css, javascript 등을 보내주었습니다. django rest framework 는 클라이언트의 요청에 대해 JSON
을 돌려줌으로서 소통을 합니다.
위에 예시를 보면 알겠지만 JSON 은 겉보기에 자바스크립트 객체와 같은 형태입니다. 그렇다면 JSON과 자바스크립트 객체는 같은 것일까요? 아닙니다. 만약 자바스크립트 객체를 통해 데이터를 전송하다보면 자바스크립트 객체라는 타입을 인지 못하는 경우가 발생할 수 있습니다. 따라서 가장 일반적인 자료형인 문자열로 데이터를 주고 받아 이러한 문제를 해결합니다. 즉, JSON 도 문자열 타입입니다.
자바스크립트 객체를 JSON 으로 바꾸는 것을 직렬화, Serialization 이라고 합니다.
python에서 json 다루기
이제 python 에서 json 을 다뤄봅시다. 다행히도 python 은 json
을 import 만 해주면 쉽게 사용할 수 있습니다.
myData
를 JSON 과 같은 형태로 선언을 해줍시다. 사실 python 에서도 다음과 같이 선언하는 자료형이 존재합니다. 바로 딕셔너리 입니다. 따라서 myData
의 타입은 현재 dict 입니다.
import json
myData = {
"squadName": "Super hero squad",
"homeTown": "Metro City",
"formed": 2016,
"secretBase": "Super tower",
"active": True,
"members": [
{
"name": "Molecule Man",
"age": 29,
"secretIdentity": "Dan Jukes",
"powers": [
"Radiation resistance",
"Turning tiny",
"Radiation blast"
]
}
]
}
print(type(myData)) # <class 'dict'>
이를 JSON 으로 바꾸는 건 아주 간단합니다. json 내에 dumps 를 통해 dict 를 JSON 의 타입인 str 로 변환이 가능합니다.
myDataJson = json.dumps(myData)
print(type(myDataJson)) # <class 'str'>
반대로 JSON 을 원래의 python dict 로 원상복귀하는 과정도 아래와 같이 loads 를 통해 간단히 할 수 있습니다.
myDataReturn = json.loads(myDataJson)
print(type(myDataReturn)) # <class 'dict'>
'웹프로그래밍 > DRF' 카테고리의 다른 글
[Django] filtering 과 Search (0) | 2019.12.29 |
---|---|
[Django] format 과 Renderer (0) | 2019.12.29 |
[Django] ViewSet 과 Router (9) | 2019.12.28 |
[Django] APIView, Mixins, generics APIView, ViewSet을 알아보자 (15) | 2019.12.27 |
[Django] django rest framework 를 위한 JSON 직렬화 (0) | 2019.11.19 |