Существующий объект Python3 Ordered Dict to JSON не сохраняет свой порядок при преобразовании в JSON - PullRequest
0 голосов
/ 17 декабря 2018

нуждающихся в некоторой помощи.У меня есть существующий заказанный python dict, который я пытаюсь преобразовать в объект json и сохранить тот же порядок, который был в заказанном питоном dict.У меня есть следующая строка "streamDict = json.loads(streamDict, object_pairs_hook=OrderedDict)", что я думал, что keet тот же порядок, и когда я распечатываю это, кажется, в порядке.Однако в моем HTML-файле у меня есть следующая строка под тегами скрипта "var streamDict = {{streamDict|tojson}}", и когда я делаю console.log, я вижу, что порядок теперь потерян.Может кто-нибудь помочь мне понять, как я могу сохранить порядок при преобразовании моего python dict в объект json?

Это мой маршрут

@app.route('/performance_reports_detail<string:clickedOid>', methods=['GET', 'POST'])
def performance_reports_detail(clickedOid):

    streamDict = json.dumps([streamDict])
    streamDict = json.loads(streamDict, object_pairs_hook=OrderedDict)
    print('streamDict after loads is {}'.format(streamDict))


    return render_template('performance_reports_detail.html', streamDict=streamDict[0])

вот результат оператора print в моем маршрутедля json.loads, похоже, сохранил порядок.Я ожидаю, что ключ baselinePerformance останется первым.

streamDict after loads is [OrderedDict([('baselinePerformance', OrderedDict([('OSPF_IPv4_Stream3', 4222973.5), ('aggregate', 16891885.5), ('OSPF_IPv4_Stream2', 4222973.5), ('OSPF_IPv4_Stream1', 4222964.5), ('OSPF_IPv4_Stream4', 4222974.0)])), ('PickAndChoosePerformance', OrderedDict([('OSPF_IPv4_Stream3', 4222977.0), ('aggregate', 16891911.5), ('OSPF_IPv4_Stream2', 4222977.0), ('OSPF_IPv4_Stream1', 4222981.0), ('OSPF_IPv4_Stream4', 4222976.5)]))])]

это мой HTML-файл

<script type="text/javascript">
    var streamDict = {{streamDict|tojson}}
    console.log(streamDict);

</script>

Вот вывод console.log, теперь вы можете видеть, что порядок изменился.enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...