javax.json - 使用数组列表和一个单独的属性构建 JsonObject

javax.json - Build JsonObject with arraylist and one separated attribute

我有一个方法应该 return a Response with a JsonObject (with arraylist) 与本文底部的代码完全一样。这是一个 java @GET 方法。我知道如何用 json.createObjectBuilder 构建一个 jsonobject,例如:

 JsonObject jo = Json.createObjectBuilder().add("name", "item").add("user", user.getUser()).build();

但我不知道如何像下面的代码那样构建。 所以我必须使用名称 "items" 进行添加,这是一个数组列表。每个项目都有四个属性:id、name、bool 和另一个 arraylist reserveItems(reserveItems 可以为 null)。在此之后我必须添加名称长度和值 687.

{
              "items" :[
                           {
                              "id"         : 1,
                              "name"       : "Item1",
                              "bool"       : true,
                              "reserveItems": []
                           },
                           {
                              "id"         : 2,
                              "name"       : "Item2",
                              "bool"       : false,
                              "reserveItem": []
                           }
              ],
              "length"  :687
    }

JsonObjectBuilder interface 中,您可以通过以下方式获取 JsonObject:

                JsonObject value = Json.createObjectBuilder()
                .add("items", Json.createArrayBuilder()
                        .add(Json.createObjectBuilder()
                                .add("id", 1)
                                .add("name", "Item1")
                                .add("bool", true)
                                .add("reserveItems", Json.createArrayBuilder())
                        )
                        .add(Json.createObjectBuilder()
                                .add("id", 2)
                                .add("name", "Item2")
                                .add("bool", false)
                                .add("reserveItems", Json.createArrayBuilder())
                        )
                )
               .add("length", 687)
               .build();

               System.out.println(value);