展平是嵌套文档在遇到没有嵌套概念的东西之前需要的:环境文件、 电子表格列、翻译目录,任何由键值对构建而没有自身结构的东西。
使用JSON展平器
选择方向和路径样式,因为展平路径的写法没有单一标准。提供三种
拼写方式:a.b.0、a/b/0和a.b[0],工具会说明正在使用哪种,
而不是默默选择一种。
展平
{"user":{"name":"Ana","tags":["a","b"]},"empty":{}}
点样式返回:
{
"user.name": "Ana",
"user.tags.0": "a",
"user.tags.1": "b",
"empty": {}
}
嵌套键变成点路径,数组元素附加其索引,空对象作为自身值保留 而不是消失,因为没有它就没有东西可以赋予路径,文档将无法 生存往返过程。
两个真正模糊的情况,公开处理
已经包含分隔符字符的键会产生没人能正确读回的路径,因此工具按
名称拒绝它:点样式下的"a.b"键会被拒绝,消息会命名该键并建议
不同的路径样式,而不是默默生成损坏的路径。
另一方面,反展平时,仅由数字组成的路径段可能意味着数组索引或 恰好是数字的对象键,展平文档中没有任何说明。“数字是数组索引” 正是出于这个原因的切换:错误猜测会将按年份键控的对象转换为 包含数千个空槽的数组。
往返过程
使用相同路径样式反展平上述示例,返回完全相同的原始文档:嵌套 对象、原始顺序中的两元素数组,以及保留而非丢弃的空对象。这个 往返过程是路径样式的点和索引被正确读回的真正证明,因为关于 数组索引的错误假设通常只有在您转换回并与原始比较时才会显示。
保留空容器
关闭此选项会完全丢弃空对象和数组,而不是将它们保留为展平条目, 这在展平形式送往根本无法容纳空值的地方时很有用,如某些环境文件 格式。