python - 如何保持传递给 jsonify() 函数的排序字典的顺序?
问题描述
我正在尝试将排序的字典传递给 jsonify() 函数,然后在 JS 代码中使用它来取出值。我看到的是,即使我传递了正确的值,由于某种原因它们被 jsonify 重新排序。
json_data = {
"11": {
"j_id": "out",
},
"aa": {
"j_id": "in",
},
"bb": {
"j_id": "out",
},
}
jkeys=json_data.keys()
sorted_json = sorted(jkeys, key=lambda x: json_data[x]['j_id'], reverse=False)
new_sorted=OrderedDict()
for rec in sorted_json:
new_sorted[rec]=json_data[rec]
print('sort dict: {}'.format(new_sorted))
输出是正确的,我可以看到正确的值,在我的情况下应该是:aa, 11, bb
>>> from collections import OrderedDict
>>>
>>> json_data = {
... "11": {
... "j_id": "out",
... },
... "aa": {
... "j_id": "in",
... },
... "bb": {
... "j_id": "out",
... },
... }
>>>
>>> jkeys=json_data.keys()
>>> sorted_json = sorted(jkeys, key=lambda x: json_data[x]['j_id'], reverse=False)
>>>
>>> new_sorted=OrderedDict()
>>> for rec in sorted_json:
... new_sorted[rec]=json_data[rec]
...
>>> print('sort dict: {}'.format(new_sorted))
sort dict: OrderedDict([('aa', {'j_id': 'in'}), ('11', {'j_id': 'out'}), ('bb', {'j_id': 'out'})])
不幸的是,当我将它传递给 jsonify() 函数,然后例如 console.log() 输出烧瓶数据时,顺序变成这样:11,aa,bb。除此之外,我做了一些研究并找到了这个stackoverflow 答案,导致了一些很好的文档说明,其中明确指出不推荐将JSON_SORT_KEYS设置为False 。然后我检查了这个 github 问题,似乎问题在烧瓶中没有完全解决。
在我的情况下解决它的最佳方法是什么?
解决方案
在应用定义之后将此配置行添加到您的代码中:
app = Flask(__name__)
app.config['JSON_SORT_KEYS'] = False
推荐阅读
- javascript - 如何在sailsjs 应用程序中使用ES6 导入和反应?
- rest - 使用 invoke-webrequest 将 crt 上传到 f5-ltm
- ios - SpriteKit - 动画 SKShapeNode 形状路径
- python - 如果正文太大,Nginx/Uwsgi/Flask POST 超时
- awk - 在打印中将一个数字打印到一行
- pip - 无法安装 CNTK
- sql - 如何编写 SQL 查询来找出一年中每个月至少购买两次的客户
- html - 扩大范围输入
- javascript - 如何替换特定位置号码的数字
- kubernetes - 如何在 Kubernetes 中执行文件监视