본문 바로가기
  • 기억보단 기록을..
Python/DRF

[DRF] Json 기초

by reine94._.dev 2021. 1. 5.

Json

JavaScript Object Notation
데이터 송수신을 JS객체로서 수행할 수 있게 해주는 가벼운 문자열 데이터 표현식


 

예시

{
  "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"
      ]
    }
  ]
}

 

Django 에서의 Json

django rest framework 전까지는 클라이언트의 요청에 대해 서버는 우리가 잘 알고 있는 html, css, javascript 등을 보내주었습니다. drf 는 클라이언트의 요청에 대해 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'>

 

참고블로그

ssungkang.tistory.com/entry/Django-django-rest-framework-%EB%A5%BC-%EC%9C%84%ED%95%9C-JSON-%EA%B8%B0%EC%B4%88?category=366160

 

[Django] django rest framework 를 위한 JSON 기초

DRF 라고 불리는 django rest framework 를 학습하기 이전에 기초적인 내용에 대해 알아보고자 합니다. JSON JSON 은 JavaScript Object Notation 의 줄임말로서 데이터의 송수신을 자바스크립트 객체로서 수행할.

ssungkang.tistory.com

 

댓글