python - 在 Tornado 处理程序中对 json_util_dumps 中的项目进行排序
问题描述
我想输出如下(在我的脚本中排序)。
{"data": [
{ "cid": "CG138712",
"mac": "24-A4-3C-F6-51-21",
"category": "CPE- E",
"last_seen": "2017-12-11 12:42:10",
"cpe-o": {"cid": "CS247314",
"mac":"80-2A-A8-7E-1D-8E",
"category": "CPE-O",
"last_seen": "2018-05-14 15:28:42",
}
}]
}
但是我的代码保持这样的输出。
{"data": [
{ "cid": "CG138712",
"category": "CPE- E",
"cpe-o": {"cid": "CS247314",
"last_seen": "2018-05-14 15:28:42",
"category": "CPE-O",
"mac":"80-2A-A8-7E-1D-8E"
}
"mac": "24-A4-3C-F6-51-21",
"last_seen": "2017-12-11 12:42:10",
}]
}
这就是我在脚本中实现的方式!
cpeo_dict = dict(......)
doc = {"cid": document['cid'],"mac": document['mac'],"category": document['category'],"last_seen": document['last_seen'].strftime("%Y-%m-%d %H:%M:%S"),"cpe-o": cpeo_dict}
docs_uplink.append(doc)
dumped = json_util.dumps(dict(data=docs_uplink))
我找不到如何在 json_util.dumps 函数中添加参数,我只找到了 json.dumps 的 sort 和 OrderedDict。
解决方案
Python 字典不保留顺序。有一个特殊的类用于保留 dicts 中的顺序 - collections.OrderedDict
。dict
您需要使用 ,而不是使用OrderedDict
。
例子:
from collections import OrderedDict
doc = OrderedDict([
('cid', document['cid']),
('mac', document['mac']),
('category', document['category']),
# ... other keys ...
])
docs_uplink.append(doc)
dumped = json_util.dumps(dict(data=docs_uplink))
推荐阅读
- c# - C# Newtonsoft JSON - 使用未知对象的集合反序列化对象
- android - 如何更改 Room 数据库的主键
- sql - PROC-SQL - 仅返回具有最小日期值的行
- python - 如何修复'AssertionError:所有表达式都应该是列'?
- java - 尝试使用重复的属性名称解析 xml
- flutter - 嵌套地图可能吗?
- sql - 如何使用第一部分的数据排除 UNION 第二部分中的数据?
- javascript - React / Redux 如何用逗号分割输入值
- javascript - 从 http 响应乘以和添加 json 格式的值
- python - 估计的训练时间和训练所需的数据量 [Rasa]