【发布时间】:2015-06-25 13:19:13
【问题描述】:
是否可以使用 Java EE 7 的 javax.json 库从 List<MyClass> 创建 JSON 字符串,而无需遍历 List<MyClass>?
这就是我现在所做的,2000 次迭代的性能是不可接受的。有什么建议吗?
List<MyClass> items = MyDB.getAllItems();
JsonObjectBuilder builder = Json.createObjectBuilder();
builder.add("success", true);
JsonArrayBuilder childrenArrayBuilder = Json.createArrayBuilder();
for (MyClass item : items) {
childrenArrayBuilder.add(
Json.createObjectBuilder()
.add("id", getTreeNodeId(item) + "-" + (idSplit[1]))
.add("nodeStatus", b)
.add("text", item.getName())
.add("leaf", false));
}
【问题讨论】:
-
简单地说,如果您想要所有数据,您必须遍历所有数据 - 如果您只想要 100 个条目,您可以迭代到 100。
-
不管你怎么做,总有人必须遍历列表。否则所有项目应该如何成为 JSON 的一部分?
-
该列表包含大约 5000 个项目,如果我想对其进行迭代,性能并不好。
-
亚历克斯是什么意思?使用 gson 或 JSONArray 是可能的!
-
这有点老了,但仍然值得回应.... @sina:如果您使用的是 gson,那么在其内部,gson 正在迭代所有 5000 个项目。性能可能更好或更差,但无论哪种方式,这将是一个 O(n) 操作。不同之处主要在于您编写了多少代码,而不在于 VM 是否遍历整个列表。
标签: json jakarta-ee java-ee-7