Saving Structured Data with JSON
문자열은 파일에서 쉽게 쓰고 읽을 수 있습니다. 숫자는 조금 더 많은 노력이 듭니다. read() 메소드가 오직 문자열만 반환하기 때문이고, int() 같은 함수에 전달되어야 '123'같은 문자열을 숫자값으로 반환해줍니다. 리스트나 딕셔너리 묶음과 같은 복잡한 데이터타입을 저장하는 경우, 파싱이나 직렬화 하는 것이 복잡해집니다.
복잡한 데이터 타입을 파일에 저장하기 위해 지속적으로 코드를 작성하고 디버그하는 대신, 파이썬은 JSON이란 유명한 파일교환 형식을 사용합니다. JSON은 파이썬 데이터의 계층을 가져와서 문자열로 변환할 수 있습니다. 이 프로세스를 serializing이라 부릅니다. 문자열 표현에서 데이터를 재구조화 하는 것은 reserializing이라 부릅니다. serializing과 reserialzing의 사이에서 객체를 나타내는 문자열이 파일이나 데이터에 저장되었거나 네트워크 연결을 통해 다른 먼거리의 기계로 전송되었을 수 있습니다.
JSON 포맷을 보통 데이터를 교환하는 현대의 응용프로그램에 쓰입니다. 많은 프로그래머들이 많은 프로그래머들이 이미 JSON에 친숙하므로 상호운용성을 위해 JSON을 쓰는 것은 좋은 선택입니다.
객체 X가 있다면, 간단한 코드로 그것의 JSON 문자열 표현을 볼 수 있습니다.
dumps() 함수의 다른 다양한 변형으로, dump()가 있습니다. dump()는 단순히 객체를 텍스트 파일로 serializing 합니다. 그래서 만약 f라는 파일에 X를 쓴다면, 다음과 같이 코드를 작성하면 됩니다.
파일 f를 개체x로 다시 디코드하려면, 아래와 같이 작성하면 됩니다.
이 간단한 Serializing 기술은 리스트나 딕셔너리에도 쓸 수 있지만, JSON에서 임의 클래스 인스턴스를 Serializing하는 것은 조금 다른 노력을 필요로 합니다. JSON 모듈에 대한 참조는 이것에 대한 설명을 포함하고 있습니다.