java - 对象数组与对象对象

问题在于决定以下符号之间的权衡:

基于 JSON 的:

"users": {
    "id1": {
        "id": "id1",
        "firstname": "firstname1",
        "lastname": "lastname1"
    },
    "id2": {
        "id": "id2",
        "firstaame": "firstname2",
        "lastname": "lastname2"
    }
}

基于数组:

users: [
    {
        "id": "id",
        "key2": "value2",
        "key3": "value3"
    },
    {
        "id": "id",
        "key2": "value2",
        "key3": "value3"
    }
]

关于 this在同一个问题上发帖,我决定(在前端)使用 JSON 对象表示法而不是对象数组,因为它符合我的要求、更好的性能和更少的浏览器代码。

但问题是列表本身不是静态的。我的意思是正在生成列表,即从数据库(NoSQL)获取/存储,并通过服务器上的 Java API 为新条目创建。我无法决定我应该在后端使用哪种表示法(最终也会影响 UI)。

感谢您对性能、可维护性或可扩展性提出任何想法/建议。

最佳答案

这是一个基于总体意见的问题。可能还有很多其他的点,但我可以指出如下。

基于 JSON 的方法: 如果我没记错的话,这将在服务器端使用 Map 来实现。

优点:在JavaScript中可以直接使用users.id1、users.id2,即不需要迭代

缺点:在客户端,您需要一些方式来要求 JSON 中存在的 id,即硬编码或使用一些动态方法来告诉您 JSON 中存在哪个 id。


基于数组的方法:如果我没记错,那么这将在服务器端使用 Array/List 来实现。

优势:

  1. 在客户端,您可以直接遍历数组,无需 提前担心其中存在哪个id,即没有硬 编码。
  2. 正如 @JBNizet 所指出的,基于数组的方法将保持顺序。

缺点:如果要获取单个 id,则需要遍历数组。

通常我们不会在客户端发送太多信息,因此基于数组的方法不会产生任何问题。如果您想要基于 id 的方法,在双方(服务器和客户端)都可以将数组转换为 map

https://stackoverflow.com/questions/31469441/

相关文章:

java - jackson JSON : get node name from json-tree

javascript - 如何使用 JSON 数据填充选择框的选项?

ios - 如何在 Swift 中组合两个 Dictionary 实例?

json - Postgres JSON 数据类型 Rails 查询

javascript - 从名称、值 JSON 数组中获取一项

javascript - 是否有任何将 json 转换为 url 参数的 native 函数?

c# - asp.net core 1.0 web api使用camelcase

c# - 在 C# 中将对象转换为 JSON 字符串

java - 在 Spring Boot 中返回 JSON 对象作为响应

jquery - 将json加载到变量中