here에 설명 된 방법을 사용하면 순서를 유지하기 위해 중첩 된 JSON 파일을로드 할 때 OrderedDict
을 object_pairs_hook
으로 전달합니다.JSON을로드 할 때 순서를 유지하고 모든 키를 유지 관리 하시겠습니까?
주문이 보존되며, 이는 의 경우 대부분의 JSON 개체에 적합합니다.
"In Content" : { "Sulvo" : "abc.com_336x280_he-inlinecontentmobile", "Sulvo" : "abc.com_336x280_he-inlinecontentmobile_level2", "Sulvo" : "abc.com_336x280_he-inlinecontentmobile_level3", "Adsense" : "" },
가공 할 때, 이들과 동일한 키들 중 하나만이 유지 얻는다 : 그러나 모양 (중첩 최하위 레벨에서) JSON 부분이있다
OrderedDict([(u'Sulvo', u'homeepiphany.com_336x280_he-inlinecontentmobile_level3'), (u'Adsense', u'')])),
defaultdict
과 동일한 키 이름의 여러 항목을 가진 사전을 가질 수 있다는 것을 알고 있습니다. 다음은 그래도 작동하지 않으며, 우리가 열쇠를 얻을 수 있지만, 순서를 잃게 추정는 않았다조차, 그래서 우리는 오프 더 좋은 없을 것 :
j = json.load(open('he.json'), object_pairs_hook=defaultdict)
은 질서를 유지하는 것이 가능 및은 모든 키를 한 번에 보존합니까?
파이썬 2.7.12
그 대답은 하나의 지옥입니다. 'handle_mapping()'제안까지 왔습니다. json 파일을'json.load()'로 전달하는 것, 즉'object_pairs_hook'을 지정하지 않는 것 또한 놀라운 결과였습니다. 더미 함수를 전달하면 결과가 보존되는 반면 아이템은 잃어 버렸습니다. 내일 당신의 완전한 해결책을 시도 할 것입니다. 감사. – Pyderman
@Pyderman : 파이썬에서'dict ([('a', 1), ('a', 1)]) == { 'a': 1} == { 'a': 1, 'a' 1}', 왜냐하면 사전에 중복 된 키를 갖는 것이 의미가 없기 때문입니다 ('d [ 'a']')?). 자바 스크립트 (** J ** SON의 J)도 똑같습니다. JSON이 너처럼 이상한 경우 Python이 사전이 아닌 다른 것을 사용하여 요소를 보유하도록 지시해야한다. – Blender