如何使用循环(动态)将JSONObject添加到javax.json.JsonArray

如何使用循环(动态)将JSONObject添加到javax.json.JsonArray,java,json,Java,Json,要将对象添加到JsonArray,Oracle.com上提供了以下示例代码 JsonArray value = Json.createArrayBuilder() .add(Json.createObjectBuilder() .add("type", "home") .add("number", "212 555-1234")) .add(Json.createObjectBuilder() .add("type", "fax") .add("num

要将对象添加到JsonArray,Oracle.com上提供了以下示例代码

JsonArray value = Json.createArrayBuilder()
 .add(Json.createObjectBuilder()
     .add("type", "home")
     .add("number", "212 555-1234"))
 .add(Json.createObjectBuilder()
     .add("type", "fax")
     .add("number", "646 555-4567"))
 .build();
实际上,我有一个Servlet,它将从数据库读取数据,并根据检索到的行数,将数据作为JsonObject添加到JsonArray。为此,我所能想到的就是使用循环将JsonObject添加到JsonArray中,但它不起作用。这就是我正在做的。这里,

//Not working
JsonArray jarr = Json.createArrayBuilder()
    for (int i = 0; i < posts[i]; i++)
    {
        .add(Json.createObjectBuilder()
            .add("post", posts[i])
            .add("id", ids[i]))
    }
        .build();
//不工作
JsonArray jarr=Json.createArrayBuilder()
for(int i=0;i

这是我第一次使用JavaJSONAPI。将对象动态添加到JsonArray的正确方法是什么。

您发布的内容不是用Java编写的

首先,获取生成器:

JsonArrayBuilder builder = Json.createArrayBuilder();
然后迭代并在循环中添加对象:

for(...) {
  builder.add(/*values*/);
}
最后获得JsonArray:

JsonArray arr = builder.build();

您需要在每次迭代结束时完成JsonObjectBuilder的构建,以使其正常工作

JsonArrayBuilder jarr = Json.createArrayBuilder();
for (int i = 0; i < posts[i]; i++)
{
    jarr.add(Json.createObjectBuilder()
        .add("post", posts[i])
        .add("id", ids[i]).build());
}
    jarr.build();
JsonArrayBuilder jarr=Json.createArrayBuilder();
for(int i=0;i
很明显,
for
循环肯定不是一个对象,您不能在其上调用
build
。您可能希望在迭代结束时调用buildon
jarr
。另外,
i
可能没有任何意义。posts和id是包含要添加的数据的字符串数组。您的第一行desn没有为我编译。第一个单词必须是JsonArrayBuilder。然后它应该被称为builder,而不是jarr。这个概念很好,但是命名约定被破坏了。非常感谢!这让我省去了几个小时的沮丧:原来我需要在
build()
之前添加
JsonObject