现在的问题是决定下列符号之间的权衡:
基于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"
}
]关于同一问题上的这帖子,我决定(在前端)使用JSON对象表示法,而不是对象数组,因为它适合我的要求,性能更好,浏览器中的代码更少。
但问题是清单本身并不是静态的。我的意思是,列表正在生成,即从DB (NoSQL)中获取/存储,并通过服务器上的Java为新条目创建。我无法决定应该在后端使用哪种符号(这最终也会影响UI )。
任何关于性能、可维护性或可伸缩性的想法或建议都将受到重视。
发布于 2015-07-17 07:15:09
这是一个完全基于意见的问题。也许还有许多其他的问题,但我可以指出如下。
基于JSON的方法: --如果我没有错,那么这将在服务器端使用Map实现。
优势: In JavaScript您可以直接使用users.id1,users.id2,即不需要迭代
的缺点:在客户端,您将如何要求JSON中的id --即硬编码它,或者使用某种动态方法来告诉您在JSON中存在哪个id。
基于阵列的方法:,如果我没有错,那么这将在服务器端使用Array/List实现。
优势:
缺点:,如果您想获取单个id,那么您将需要遍历数组。
通常,我们不会在客户端发送太多信息,因此基于数组的方法不会造成任何问题。如果您需要基于id的方法,则可以在端(服务器和客户端)将数组转换为map。
发布于 2015-07-17 07:28:43
在服务器端,数组存储为简单列表:ArrayList<Content>,而对象要么存储为映射:HashMap<String, Content>,要么大部分存储为Java。
为了将Java实体与JSON之间进行转换,您可以查看杰克逊项目,它为您完成了所有这些工作。
我不担心这两个变体之间的性能差异。更重要的是要有一个可以理解的语义API,因此您应该基于业务案例而不是性能。
看看您的例子,我认为Array是更好的方法,因为您希望返回一个用户列表,这些用户都是相等的。发送两次id是没有意义的,因为它增加了必须传输的数据量。
此外,由于Arrays在Java中存储和迭代要简单得多,它们还应该提供比对象更好的性能。
的一些一般区别:
发布于 2018-11-08 22:08:21
除了上述技术上的差异,我认为在对象和数组的目的和意义上存在着根本的差异。
- For example a card holder. Each card does **NOT DESCRIBE/DEFINE** the card-holder. But the card holder does define it's purpose that it holds only cards/
- An Object is used to represent an entity and its properties **DESCRIBE/DEFINE** the entity. Take the same example of a Card. A card has properties like color, number which **DESCRIBE/DEFINE** what the card is.
对于上面的例子:
是一个比
"users": {
"id1": {
"id": "id1",
"firstname": "firstname1",
"lastname": "lastname1"
},
"id2": {
"id": "id2",
"firstaame": "firstname2",
"lastname": "lastname2"
}
}尽管技术上你可以用任何一个。我希望我能以正确的方式表达我的思想。
https://stackoverflow.com/questions/31469441
复制相似问题