跳转到主要内容
CuteJSON
↑↓ 导航 Enter 选择 Esc 关闭

如何将JSON展平为路径和值,以及如何还原

发布 1 分钟阅读 作者 Akash Kinkar Pandey

展平是嵌套文档在遇到没有嵌套概念的东西之前需要的:环境文件、 电子表格列、翻译目录,任何由键值对构建而没有自身结构的东西。

使用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"键会被拒绝,消息会命名该键并建议 不同的路径样式,而不是默默生成损坏的路径。

另一方面,反展平时,仅由数字组成的路径段可能意味着数组索引或 恰好是数字的对象键,展平文档中没有任何说明。“数字是数组索引” 正是出于这个原因的切换:错误猜测会将按年份键控的对象转换为 包含数千个空槽的数组。

往返过程

使用相同路径样式反展平上述示例,返回完全相同的原始文档:嵌套 对象、原始顺序中的两元素数组,以及保留而非丢弃的空对象。这个 往返过程是路径样式的点和索引被正确读回的真正证明,因为关于 数组索引的错误假设通常只有在您转换回并与原始比较时才会显示。

保留空容器

关闭此选项会完全丢弃空对象和数组,而不是将它们保留为展平条目, 这在展平形式送往根本无法容纳空值的地方时很有用,如某些环境文件 格式。

返回所有文章