해당 내용은 다음의 자료를 적극 참고하였고, 그 내용의 일부를 정리했다.
출처 : https://realpython.com/python-json/#python-supports-json-natively
python 은 기본적으로 json 형태를 encode하고 decode할수 있는 모듈을 갖고 있다. python 내장모듈이므로 단순히 import 하여 사용할 수 있다.
import json
JSON을 encoding 하는것을 Serialization 이라고 한다. 즉, 통신을 통해 저장이나 전달 할때 data를 일련의 bytes로 변환하는 것이다.
당연히 Deserialization은 이 반대 개념이다.
python으로 작성한 코드를 json으로 encode할때 데이터 형식이 각가의 환경에 맞게 변화된다.
Python | JSON |
---|---|
dict | object |
list, tuple | array |
str | string |
int, long, float | number |
True/False | true/flase |
None | null |
decimal ??
위 표를 보면 JSON에서는 decimal 형태를 다루지 않는다! 이거때문에 프로젝트하면서 decimal 형태를 처리하지 못하는것에 대한 에러를 정말 많이봤다. 따라서 JSON으로 encode 하기전에 형태를 바꿔주어야 했다. (반올림하거나, 소수점을 제거하거나, float으로 바꿔주거나 등)
json library를 이용해 들어온 data를 file처리하는데 dump()
라는 method를 사용할 수 있다.
또한 Python 문자열로 입력하는데 사용되는 dumps()
라는 method도 존재한다.
dump() method는 두개의 kwargs를 받는다.
json.dump(a, b)
이와 달리 dumps()는 한개의 argumnet만 받아도 된다.
json.dumps(data)
여기서 data는 native python str 객체
로 작성될 data를 뜻한다
반대로 JSON형식이 python으로 변환될때 데이터 타입은 다음과 같이 변한다.
JSON | Python |
---|---|
object | dict |
array | list |
string | str |
number(int) | int |
number(real) | float |
true/false | True/Flase |
null | None |
JSON 형식을 Python으로 decoding할때 사용하는 json의 method이다.
json.loads(#JSON_data)