求将带层级分隔符的扁平JSON转换为嵌套JSON的通用逻辑
通用实现思路
要把这种用冒号做层级分隔的扁平JSON转成嵌套结构,核心是拆分键的层级,逐层构建嵌套字典,通用步骤如下:
- 先创建一个空的目标字典,用来存放最终的嵌套结果。
- 遍历扁平字典里的每一组键值对:
- 把当前键按分隔符(这里是冒号)拆分成层级列表,比如
"address:street"会拆成["address", "street"]。 - 初始化一个临时指针,指向目标字典(相当于当前操作的父节点)。
- 遍历拆分后的层级列表,但跳过最后一个元素:
- 如果当前层级的键不在临时指针指向的字典里,就给这个键创建一个空字典作为值。
- 把临时指针移动到这个新创建(或已存在)的子字典上,进入下一层级。
- 把最后一个层级的键和对应的值,赋值给当前临时指针指向的字典。
- 把当前键按分隔符(这里是冒号)拆分成层级列表,比如
- 所有键值对处理完后,目标字典就是你要的嵌套结构。
举个逻辑示例:处理"address:number":10时,拆分得到["address", "number"],先检查目标字典里有没有address,如果有就把指针移到address对应的字典,然后给这个字典添加"number":10;如果没有address,就先创建{"address":{}},再移指针进去赋值。
这个思路能处理任意深度的嵌套,也兼容重复层级的键(比如多个address:开头的键会自动合并到同一个address字典下)。
内容的提问来源于stack exchange,提问作者iAmoric
相关产品推荐
相关产品推荐

