JSON 对象id为主键架构设计

JSON object with id as primary key schema design

我想使用 ID 作为 JSON 对象中的主键。这样列表中的所有用户都是唯一的。

像这样:

{
    "user": [{
        "id": 1,
        "name": "bob"
    }]

}

在应用程序中,我必须在列表的所有元素中搜索 id 'user'。

但我也可以使用 ID 作为索引,以便更轻松地访问特定用户。 像这样:

{
    "user": {
        "1": {
            "name": "bob"
        }
    }
}

在应用程序中,我现在只需编写 user["3"] 即可获得正确的用户。

我应该用什么?第二种选择有什么缺点吗?我确定有最佳实践。

这取决于您希望对象采用何种格式、您希望对对象进行多少处理以及您拥有多少数据。

在处理网络数据时,您经常会看到第一种格式。如果有很多数据,那么您将需要遍历所有记录以找到匹配的 id,因为您的数据是一个数组。通常该查询会在您的较低级别数据集上强制执行,因此它可能已经被索引(例如,如果它是一个数据库),所以这可能不是问题。这种格式干净且易于绑定。

当您需要提高查找效率时,您的第二个选项最有效,因为您有一个包含键值对的字典,可以显着加快大型数据集中的查找速度。并非所有库都支持放置数字键(即使您将其强制为字符串)。不过,您可以在您的 Id 前面加上一个 alpha 值,然后您可以在进行查找时添加前缀。我在此示例中使用了 k,但您可以选择对您的数据有意义的前缀。在数据库中将对象存储为 json 二进制数据类型时,我使用这种格式。

{
    "user": {
        "k1": {
            "name": "bob"
        }
    }
}