如何通过Python OrderedDict生成指定嵌套JSON结构?
用Python OrderedDict构造嵌套JSON结构
先明确你要生成的目标JSON结构:
{ "id": "de", "Key": "1234567", "from": "test@test.com", "expires": "2018-04-25 18:45:48.3166159", "command": "method.exec", "params": { "method": "cmd", "Key": "default", "params": { "command": "testing 23" } } }
核心思路就是嵌套使用OrderedDict——每一层的嵌套对象都对应一个新的OrderedDict实例,完全匹配JSON的层级结构。下面是完整的可运行代码:
from collections import OrderedDict import json # 先构造最内层的params字典 inner_params = OrderedDict([ ('command', 'testing 23') ]) # 再构造中间层的params字典(包含内层params) middle_params = OrderedDict([ ('method', 'cmd'), ('Key', 'default'), ('params', inner_params) ]) # 最后构造最外层的完整结构 json_payload = OrderedDict([ ('id', 'de'), ('Key', '1234567'), ('from', 'test@test.com'), ('expires', '2018-04-25 18:45:48.3166159'), ('command', 'method.exec'), ('params', middle_params) ]) # 转换成格式化的JSON字符串输出(和示例格式一致) print(json.dumps(json_payload, ensure_ascii=False, indent=4))
额外说明:
- 如果你的字段值是动态变量(比如
id、Key是从别处获取的),直接把代码里的字面量换成对应变量即可,注意避免变量名和Python内置函数重名(比如把id改成user_id更安全) - 要是你用的是Python 3.7+,普通
dict也能保持插入顺序,但如果需要兼容旧版本或者明确强调有序性,OrderedDict还是更稳妥的选择 json.dumps里的indent=4是为了让输出的JSON更易读,和你的示例格式对齐,不需要的话可以去掉
内容的提问来源于stack exchange,提问作者Jeremy
相关产品推荐
相关产品推荐

