首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用javax.json从列表创建json

使用javax.json从列表创建json
EN

Stack Overflow用户
提问于 2015-06-25 01:26:42
回答 1查看 290关注 0票数 1

我有一个包含3000个项目的列表,我必须从它创建一个json,并将其发送到我的客户端代码,即Extjs。因为JsonArrayBuilder不接受list,所以我遍历list并添加,创建每个json对象,最后将其发送到客户端。问题是这个过程需要13秒,这真的很高。

下面是我制作这个json数组的方法。

代码语言:javascript
复制
 JsonObjectBuilder builder = Json.createObjectBuilder();
 JsonArrayBuilder childrenArrayBuilder = Json.createArrayBuilder();
        builder.add("success", true);
        builder.add("children, childrenArrayBuilder);

下面是我如何遍历列表的方法

代码语言:javascript
复制
           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()))));
            }

如何提高这里的性能?

EN

回答 1

Stack Overflow用户

发布于 2018-02-11 01:17:37

使用javax Json库创建多个构建器的首选方法是使用JsonBuilderFactory。我已经修改了你下面的代码。

代码语言:javascript
复制
     // 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()))));
                }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31033148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档