![](/img/trans.png)
[英]javax.json: Build a JSONArray from a List<Integer> and add it to a JSONObject
[英]create json from list with javax.json
我有一個包含3000個項目的列表,我必須從中創建一個json並將其發送到我的客戶端代碼Extjs。 由於JsonArrayBuilder不接受列表,因此我遍歷該列表並添加創建每個json對象,最后將其發送到客戶端。 問題在於此過程需要13秒,這確實很高。
這是我制作此json數組的方法。
JsonObjectBuilder builder = Json.createObjectBuilder();
JsonArrayBuilder childrenArrayBuilder = Json.createArrayBuilder();
builder.add("success", true);
builder.add("children, childrenArrayBuilder);
這是我遍歷列表的方式
for (TagDefinitionProject tt : myList) {
childrenArrayBuilder.add(
Json.createObjectBuilder()
.add("id", getTreeNodeId(tt.getTag()) + "-" + (idSplit[1]))
.add("nodeStatus", tt.getStatus())
.add("text", tt.getNJTagName())
.add("tagNJName", tt.getTag().getName())
.add("baseType", tt.getTag().getBaseType().getName())
.add("definitionType", def)
.add("leaf", (tt.getTag().getChildren().size() == 1 || tt.getTag().getChildren().get(1).getChild().equals(tt.getTag()))));
}
如何改善此處的性能?
使用javax Json庫創建多個構建器的首選方法是使用JsonBuilderFactory。 我已經在下面修改了您的代碼。
// Create a new factory. The argument, config, can be null or
// contain a Map with configuration values for the created builders.
JsonBuilderFactory factory = Json.createBuilderFactory(config);
JsonObjectBuilder builder = factory.createObjectBuilder();
JsonArrayBuilder childrenArrayBuilder = factory.createArrayBuilder();
builder.add("success", true);
builder.add("children", childrenArrayBuilder);
for (TagDefinitionProject tt : myList) {
childrenArrayBuilder.add(
factory.createObjectBuilder()
.add("id", getTreeNodeId(tt.getTag()) + "-" + (idSplit[1]))
.add("nodeStatus", tt.getStatus())
.add("text", tt.getNJTagName())
.add("tagNJName", tt.getTag().getName())
.add("baseType", tt.getTag().getBaseType().getName())
.add("definitionType", def)
.add("leaf", (tt.getTag().getChildren().size() == 1 || tt.getTag().getChildren().get(1).getChild().equals(tt.getTag()))));
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.