파이썬에서 JSON을 사용하는 방법

JSON은 JavaScript Object Notation의 줄임말로, 기본적으로 키-값쌍의 포맷으로 구조화된 정보를 인코딩하는 규격이다. 예전에는 XML이 유연성을 근거로 많이 사용되었으나, XML 파서는 기본적으로 무겁고 비싸게 돌아가기 때문에, JSON이 등장하면서 API 관련한 쪽에서 급격히 JSON을 쓰는 쪽이 늘어나기 시작했다.

JSON 포맷은 JSON의 객체 리터럴 및 배열 리터럴을 그대로 사용하는 문법을 쓰는데, 이 포맷은 문자열을 키로 하는 파이썬의 사전(dictionary) 포맷과도 일치한다.  이에 따라 json API는 marshal이나 pickle과 유사하게 되어 있다. 기본적으로 엄격한 JSON 파일은 단일 루트 객체가 존재하며 그 내부에 여러 프로퍼티들을 갖는다. 단일 루트 객체는 사전이나 리스트 중 하나와 유사하며 json 모듈은 결국 사전/리스트를 문자열로 인코딩하거나 그 역의 처리를 하는 일을 한다.

파이썬에서 JSON을 사용하는 방법 더보기

사전의 값을 객체속성처럼 접근하는 방법 – Python

파이썬의 사전은 키-값쌍의 형태로 데이터를 구분하여 저장할 수 있고, 사전의 값이 될 수 있는 타입은 제약이 없기 때문에 중첩된 형태의 사전을 만드는 것도 가능하다. 만약 사전의 모든 키가 문자열이라면 사전을 JSON 데이터로 변환할 수 있다.

JSON은 자바스크립트에서, 자바스크립트 객체로 바로 변환할 수 있다. 따라서 자바스크립트에서는 root.somekey.nestedkey와 같은 식으로 객체 속성으로 접근해서 특정 위치의 값을 액세스하는 것이 가능하다는 말이다. 이에 반해 파이썬에서 JSON은 사전으로 파싱되고, 같은 데이터에 접근하기 위해서는 root[‘somekey’][‘nestedkey’] 와 같은 식으로 접근해야 한다.

이것을 자바스크립트에서처럼 root.somekey.nestedkey와 같이 액세스하기 위해서 간단한 래퍼 클래스를 하나 작성했다. 여기에 JSON과 호환되는 사전을 던져주면 객체처럼 . 문법을 써서 하위 속성을 액세스할 수 있다.