본문 바로가기
Python/Python FAQ

Python JSON을 OrderedDict에 로드할 수 있을까요?, Can I get JSON to load into an OrderedDict?

by 베타코드 2023. 11. 13.
반응형

질문


Ok so I can use an OrderedDict in json.dump. That is, an OrderedDict can be used as an input to JSON.

But can it be used as an output? If so how? In my case I'd like to load into an OrderedDict so I can keep the order of the keys in the file.

If not, is there some kind of workaround?

그래서 json.dump에서 OrderedDict를 사용할 수 있습니다. 즉, OrderedDict를 JSON의 입력으로 사용할 수 있습니다.

하지만 출력으로 사용할 수 있을까요? 그렇다면 어떻게 해야 할까요? 제 경우에는 키의 순서를 파일에 유지하기 위해 OrderedDict에 load하고 싶습니다.

만약 그렇지 않다면, 어떤 해결책이 있을까요?


답변


네, 가능합니다. object_pairs_hook 인수를 JSONDecoder에 지정함으로써 가능합니다. 사실, 이것은 문서에서 제공하는 정확한 예제입니다.

>>> json.JSONDecoder(object_pairs_hook=collections.OrderedDict).decode('{"foo":1, "bar": 2}')
OrderedDict([('foo', 1), ('bar', 2)])
>>> 

만약 다른 목적을 위해 Decoder 인스턴스가 필요하지 않다면, 이 매개변수를 json.loads에 전달할 수 있습니다:

>>> import json
>>> from collections import OrderedDict
>>> data = json.loads('{"foo":1, "bar": 2}', object_pairs_hook=OrderedDict)
>>> print json.dumps(data, indent=4)
{
    "foo": 1,
    "bar": 2
}
>>> 

json.load을 사용하는 방법도 동일합니다:

>>> data = json.load(open('config.json'), object_pairs_hook=OrderedDict)
반응형

댓글