如何将带点分隔键的字典转换为嵌套JSON?
将带点分隔键的字典转换为嵌套JSON结构
没问题,这需求太常见了,我来给你一个实用的解决方案!核心思路就是把每个带点的键拆分成层级路径,逐步构建嵌套字典,最后转成JSON就行。
实现步骤(以Python为例)
服务器端生成数据包用Python很顺手,我就用Python写示例:
- 导入
json模块,用来最终生成JSON字符串 - 写个辅助函数,把带点的键值对转换成嵌套字典
- 遍历原始字典,把每个键值对处理后合并到结果字典
- 最后把结果字典转成格式化的JSON
完整代码示例
import json def flatten_to_nested(flat_dict): nested_dict = {} for key, value in flat_dict.items(): # 把键按点分割成层级列表 keys = key.split('.') current = nested_dict # 遍历层级(除最后一个键),逐步创建嵌套字典 for k in keys[:-1]: if k not in current: current[k] = {} current = current[k] # 把值赋给最底层的键 current[keys[-1]] = value return nested_dict # 你的原始字典 original_dict = { "device.name": "Machine-39FK394S", "device.username": "admin", "device.operating_system": "Windows 10", "something.else": 294 } # 转换为嵌套字典 nested_result = flatten_to_nested(original_dict) # 转成格式化的JSON字符串 json_output = json.dumps(nested_result, indent=4) print(json_output)
输出结果
运行代码后,你会得到完全符合预期的嵌套JSON:
{ "device": { "name": "Machine-39FK394S", "username": "admin", "operating_system": "Windows 10" }, "something": { "else": 294 } }
这个方法特别灵活,哪怕你的键有更多层级(比如"a.b.c.d")也能轻松处理,逻辑清晰还容易修改。要是你服务器用的是Java、Go这类语言,思路也是一样的:拆分键的层级,递归或循环构建嵌套结构,最后序列化JSON就好。
内容的提问来源于stack exchange,提问作者user5405648
相关产品推荐
相关产品推荐

