JSON 建模方法

标签 json modeling

想象一下,我正在以 JSON 格式存储一个人的电话号码。一个这样的 JSON 记录可能如下所示:

{
  "firstName": "John",
  "lastName": "Smith",
  "phoneNumber": [
    {
      "type": "home",
      "number": "212 555-1234"
    },
    {
      "type": "mobile",
      "number": "646 555-4567"
    }
  ]
}

上述的一种替代结构是:
{
  "firstName": "John",
  "lastName": "Smith",
  "homePhone": {
    "number": "212 555-1234"
  },
  "mobilePhone": {
    "number": "646 555-4567"
  }
}

这两种建模方法的优缺点是什么?我看到的最明显的一点是,第一种方法允许一次性检索 所有 手机。

最佳答案

为了决定在这种情况下要做什么,您也应该考虑您的实现。

例如,假设您将在 Python 中解析和使用它。如果你把它作为一个列表,你将不得不遍历列表以找到一个给定的数字,在最坏的情况下,它可能最终成为一个 O(n) 任务。

如果将其重构为字典(哈希表),则通过访问正确的键来查找电话号码将更接近 O(1)。

总之,您对数据的处理方式以及您将如何使用它应该决定其结构。

关于JSON 建模方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32118847/

相关文章:

mysql - 如何在 MySQL 中搜索嵌套的 JSON

使用 Swift 3 进行 JSON 序列化

uml - 建模与仿真

java - GAE Endpoints (Java) with objectify - 如何为部分数据建模(对于客户端)?

json - 使用 NewtonSoft 获取特定的 Json 字段

java - 使用 Jackson 自定义 JSON 序列化/反序列化

java - 我应该如何模拟类之间的关联

json - 解析 json 文件 Angular 5 ngx-translate 期间的 Http 失败

r - 如何将 spline() 应用于大型数据帧