我很惊讶之前 StackOverflow 上没有人问过这个问题。
查看 JSON 对象文档和快速谷歌搜索没有得到令人满意的结果。
它有什么好处?它是如何工作的?
编辑:为了清楚起见,请看一下这个扁平化/非扁平化示例。
Fastest way to flatten / un-flatten nested JSON objects
谢谢。
最佳答案
在很多情况下,您会获得由某些库自动构建的 JSON 文本。在所有编程语言中,有许多构建 JSON 文本的库(一个 example is here )。
每当库添加一些额外的对象或数组包装时,您可能想要摆脱它们可能是因为您将 JSON 发送到服务器并且您的代码在那里崩溃,因为它需要一个原始值而不是一个对象(或数组) .或者,如果您的 JSON 是服务器响应,您不希望生成的 Javascript 代码在对象/数组或非对象/数组之间有所不同。在所有这些情况下,展平都是有帮助的,因为它可以节省您的时间。您将不得不实现更少的 if/elses,并且您可以可靠地期望您的数据结构尽可能平坦。
针对上述场景改进代码的另一种方法是以最大健壮的方式编写代码,这样它就永远不会因多余的包装而崩溃。所以总是期待一些包装器并获得它的内容。然后,不需要展平。
您知道,这取决于构建 JSON 的内容以及解析它的内容。该建筑物可能不在您的范围内。
这也会导致数据模型问题。我处理过 XML 代码,如果某些 XY 的条目为 0,或者某些 XY 的条目 >0,则需要以不同的方式进行安静解析。拥有一个允许包含 0 个或多个 XY 条目的包装器将使生活更轻松。这些是数据模型描述。
在 JSON 表示我手动组合的对象结构的所有情况下,我希望它不会更改。因此,将我详细设计的东西弄平会令人不安。据我所知,标准操作不需要展平(例如 JSON.stringify()
、json_encode()
等)
关于javascript - 为什么以及何时我们需要展平 JSON 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24833379/