一尘不染

为什么以及何时需要展平JSON对象?

json

令我惊讶的是,StackOverflow上没有人问过这个问题。

通过JSON对象文档和快速的Google搜索无法获得令人满意的结果。

有什么好处?它是如何工作的?


编辑:为了清楚起见,请看一下这个展平/未展平的示例。

谢谢。


阅读 218

收藏
2020-07-27

共1个答案

一尘不染

在许多情况下,您会获得由某些库自动构建的JSON文本。在整个编程语言中,有许多库构建JSON文本(此处是一个示例

每当库添加一些其他对象或数组包装时,您可能想要摆脱它们,可能是因为您将JSON发送到服务器,并且那里的代码崩溃是因为它期望使用原始值而不是对象(或数组)。或者,如果您的JSON是服务器响应,则您不希望生成的Javascript代码在对象/数组之间或对象/数组之间不必有所不同。在所有这些情况下,展平都是有帮助的,因为它可以节省您的时间。您将必须实现较少的if
/ elses,并且可以可靠地期望数据结构尽可能平坦。

针对上述情况改进代码的另一种方法是以最大程度的健壮方式编写代码,因此永远不会有多余的包装使其崩溃。因此,请始终期待一些包装并获取其中的内容。然后,不需要展平。

您会看到,这取决于正在构建JSON和对其进行解析的内容。该建筑物可能不在您的范围内。

这也导致数据模型问题。我处理过需要以其他方式安静地解析的XML代码,如果某个XY的0项存在,或者某个XY的>
0项存在。具有一个允许包含0个或多个XY条目的包装器将使生活更加轻松。这些是数据模型的描述。

在JSON代表我手动组合的对象结构的所有情况下,我都希望它 不会改变
。因此,将我详细设计的内容弄平会令人不安。据我所知,标准操作不需要展平(例如JSON.stringify()json_encode()等等)

2020-07-27