me_*_*jay 49 java arrays maintainability performance json
问题是决定以下符号之间的权衡:
基于JSON:
"users": {
"id1": {
"id": "id1",
"firstname": "firstname1",
"lastname": "lastname1"
},
"id2": {
"id": "id2",
"firstaame": "firstname2",
"lastname": "lastname2"
}
}
Run Code Online (Sandbox Code Playgroud)
基于数组:
users: [
{
"id": "id",
"key2": "value2",
"key3": "value3"
},
{
"id": "id",
"key2": "value2",
"key3": "value3"
}
]
Run Code Online (Sandbox Code Playgroud)
关于同一问题的这篇文章,我决定(在前端)使用JSON对象表示法而不是对象数组,因为它符合我的要求,并且在浏览器中具有更好的性能和更少的代码.
但问题是列表本身并不是静态的.我的意思是生成列表,即从DB(NoSQL)获取/存储,并通过服务器上的Java API为新条目创建.我无法决定我应该在后端使用哪种表示法(最终也会影响用户界面).
任何关于性能,可维护性或可扩展性的想法/建议都表示赞赏.
Nam*_*ala 19
这是一个基于意见的总问题.可能还有很多其他问题,但我可以在下面指出.
基于JSON的方法:
如果我没有错,那么这将Map在服务器端实现.
优点:在JavaScript中,您可以直接使用users.id1,users.id2,即无需迭代
缺点:在客户端,有些人会如何要求你的JSON中存在的id,即硬编码或者使用一些动态方法来告诉你JSON中存在哪个id.
基于数组的方法:如果我没有错,那么这将使用Array/ List在服务器端实现.
优点:
缺点:如果要获取单个ID,则需要遍历数组.
通常我们不会在客户端发送太多信息,因此基于数组的方法不会产生任何问题.和转化数组地图有可能在两侧(服务器和客户端),如果你想基于ID的方法.
在服务器端,数组存储为简单列表:ArrayList<Content>,而对象存储为映射:HashMap<String, Content>或者,主要存储为Java对象.
为了将Java实体转换为JSON,您可以查看杰克逊项目,它可以为您完成所有这些工作.
我不担心这两个变体之间的性能差异.拥有一个可理解的语义API更为重要,因此您应该根据业务案例而不是绩效来确定您的理念.
看看你的例子,我认为一个Array更好的方法,因为你想返回一个完全相同的用户列表.发送id两次毫无意义,并增加了必须传输的数据量.
此外,由于Arrays在Java中存储和迭代更加简单,因此它们还应提供比Objects更好的性能.
一些一般差异:
| 归档时间: |
|
| 查看次数: |
11154 次 |
| 最近记录: |