[Python] JSON으로 encoding&decoding

채록·2021년 4월 28일
0

Python & Django

목록 보기
33/34
post-thumbnail

Python과 JSON

해당 내용은 다음의 자료를 적극 참고하였고, 그 내용의 일부를 정리했다.
출처 : https://realpython.com/python-json/#python-supports-json-natively

python 은 기본적으로 json 형태를 encode하고 decode할수 있는 모듈을 갖고 있다. python 내장모듈이므로 단순히 import 하여 사용할 수 있다.

import json

1) Serialization & Deserialization

JSON을 encoding 하는것을 Serialization 이라고 한다. 즉, 통신을 통해 저장이나 전달 할때 data를 일련의 bytes로 변환하는 것이다.
당연히 Deserialization은 이 반대 개념이다.

2) Python -> JSON : encoding

python으로 작성한 코드를 json으로 encode할때 데이터 형식이 각가의 환경에 맞게 변화된다.

PythonJSON
dictobject
list, tuplearray
strstring
int, long, floatnumber
True/Falsetrue/flase
Nonenull

decimal ??
위 표를 보면 JSON에서는 decimal 형태를 다루지 않는다! 이거때문에 프로젝트하면서 decimal 형태를 처리하지 못하는것에 대한 에러를 정말 많이봤다. 따라서 JSON으로 encode 하기전에 형태를 바꿔주어야 했다. (반올림하거나, 소수점을 제거하거나, float으로 바꿔주거나 등)

> dump() & dumps()

json library를 이용해 들어온 data를 file처리하는데 dump()라는 method를 사용할 수 있다.
또한 Python 문자열로 입력하는데 사용되는 dumps()라는 method도 존재한다.

- dump()

dump() method는 두개의 kwargs를 받는다.

json.dump(a, b)
  • a : serialize화 된 data 객체
  • b : bytes를 기록할 file같은 객체

- dumps()

이와 달리 dumps()는 한개의 argumnet만 받아도 된다.

json.dumps(data)

여기서 data는 native python str 객체로 작성될 data를 뜻한다

3) JSON -> Python : decoding

반대로 JSON형식이 python으로 변환될때 데이터 타입은 다음과 같이 변한다.

JSONPython
objectdict
arraylist
stringstr
number(int)int
number(real)float
true/falseTrue/Flase
nullNone

> loads()

JSON 형식을 Python으로 decoding할때 사용하는 json의 method이다.

json.loads(#JSON_data)


끝!

profile
🍎 🍊 🍋 🍏 🍇

0개의 댓글