반응형
Python에서 JSON object를 파일에 작성할 때, key 순서를 설정해 주지 않으면 임의로 순서가 변경되는 경우가 있다.
Python에서는 JSON object를 python의 dictionary로 취급하기에, python dictionary의 속성에 영향을 받는다.
일부 python version의 dictionary는 key order를 관리하지 않으니까 그러하다.
key 순서를 제어하는 첫번째 방법은 json.dumps의 sort_keys argument를 활용하는 것이다.
>>> json.dumps({'a': 1, 'b': 2})
'{"b": 2, "a": 1}'
>>> json.dumps({'a': 1, 'b': 2}, sort_keys=True)
'{"a": 1, "b": 2}'
`sort_keys` argument를 주면 key order가 사전 내 단어 정렬 방식으로 정렬된다.
두번째 방법은 OrderedDict를 사용하는 것이다.
from collections import OrderedDict
json.dumps(OrderedDict([('a', 1), ('b', 2)]))
'{"a": 1, "b": 2}'
json.dumps(OrderedDict([('b', 1), ('a', 2)]))
'{"b": 1, "a": 2}'
OrderedDict는 입력된 순서를 보장해 준다.
반응형
'프로그래밍' 카테고리의 다른 글
vi에서 json beautify 수행하기 (0) | 2019.06.11 |
---|