2016-03-08 4 views
3

Всякий раз, когда я пытаюсь разобрать json на OrderedDict, он заканчивается в другом порядке, чем json. Я стараюсь это так:Json to OrderedDict в Python

from collections import OrderedDict  
data = OrderedDict(json.loads(resp.read().decode("utf-8")), object_pairs_hook=OrderedDict) 

я делаю что-то неправильно, если это так, что я могу сделать, чтобы исправить это, или это не возможно в Python?

Я видел такие вещи, как object_pairs_hook=collections.OrderedDict, но это даже не выполняется правильно. Он не может решить проблему.

ответ

4

Вы имеете аргумент ключевого слова в том месте, которое может быть более ясным, если мы добавим больше пробелов:

data = OrderedDict(
    json.loads(
     resp.read().decode("utf-8") # one argument to json.loads 
    ), 
    object_pairs_hook=OrderedDict # second argument to OrderedDict 
) 

OrderedDict занимает не такого аргумента - вы имели в виде передать его json.loads, то вы не необходимо заново создать его:

data = json.loads(
    resp.read().decode("utf-8"), 
    object_pairs_hook=OrderedDict 
) 

причина вы не видите заказ вы хотите, когда вы выходите из object_pairs_hook что json.loads создает ваниль, неупорядоченный словарь затем конвертирует его в OrderedDict.

+0

Это работает, отлично :) Спасибо за вашу помощь! –

+0

@FalingDutchman http://stackoverflow.com/help/someone-answers – jonrsharpe

Смежные вопросы