Python json 파싱하고 serialization 하는 python-rapidjson 라이브러리 알아보기
오늘은 Python으로 json 파일을 파싱하고 serialization 해주는 python-rapidjson을 알아보려 합니다.
python-rapidjson 설치
우선 virtualenv로 파이썬 환경을 분리해줍니다.
pip3 install virtualenv
virtualenv -mvenv env
env라는 이름의 가상 환경을 생성합니다.
source env/bin/activate
가상환경을 폴더에서 활성화합니다.
pip3 install --upgrade pip
pip의 업그레이드가 존재하는지 확인하고 진행합니다.
pip install python-rapidjson
pip로 python-rapidjson를 설치합니다.
sample json
해당 패키지가 json을 파싱하는 역할을 하기 때문에 샘플 파일을 만듭니다.
아래 예시는 github event api의 json 코드를 일부 변형해보았습니다.
생략된 필드도 있고, 가상의 사용자와 저장소를 넣었습니다.
{
"type": "PushEvent",
"created_at": "2019-01-01T07:58:30Z",
"id": "0000000000",
"actor": {
"login": "test_id",
"url": "https://api.github.com/users/test",
"id": 1000000
},
"repo": {
"url": "https://api.github.com/repos/test/helloworld",
"id": 1000000,
"name": "test/helloworld"
},
"public": true,
"payload": {
"commits": [
{
"url": "https://api.github.com/repos/test/helloworld/commits/05570a3080693f6e55244e012b3b1ec59516c01b",
"message": "message",
"distinct": true,
"sha": "05570a3080693f6e55244e012b3b1ec59516c01b",
"author": {
"email": "test@example.com",
"name": "test_name"
}
}
],
"distinct_size": 1,
"ref": "refs/heads/issue-1",
"push_id": 1000000,
"size": 1
}
}
예제
import rapidjson
rapidjson을 가져옵니다.
with open("sample.json", "rb") as f:
sample = rapidjson.loads(f.read())
print(sample)
print(type(sample))
위에서 만든 sample.json을 열어서 rapidjson.loads로 불러오면 딕셔너리 형태로 반환됩니다.
print(rapidjson.dumps(sample))
print(type(rapidjson.dumps(sample)))
rapidjson.dumps를 수행하면 문자열로 변환됩니다.
class Stream:
def write(self, data):
print("Chunk:", data)
rapidjson.dump(sample, Stream(), chunk_size=100)
dump할 때에 클래스를 만들어서 chunk의 크기를 지정하여 나눠 처리할 수 있습니다.
Written on June 16, 2019