![](/img/trans.png)
[英]javax.json - Build JsonObject with arraylist and one separated attribute
[英]javax.json: Build a JSONArray from a List<Integer> and add it to a JSONObject
简单的任务,但我找不到方法。
我的输出JSON需要为
{
"id" : "somestring",
"nums" : [44,31,87,11,34]
}
我在JSONObject
/ JsonArray
使用javax.json
库。 有一个List<Integer>
,其中包含第二个字段的值。 这些不是对象,而是纯数字。 我不知道如何从整数获取JSONValue。
Map<String, Object> config = new HashMap<String, Object>();
JsonBuilderFactory factory = Json.createBuilderFactory(config);
JsonArray jsonArray = (JsonArray) Json.createArrayBuilder();
for (Integer num: nums) // Assume a List<Integer> nums
jsonArray.add(..); // What to do here? JSONValue from an Integer?
// Can't do jsonArray.add(num)
// Final Object
JsonObject value = factory.createObjectBuilder()
.add("id", id)
.add("nums", jsonArray); // Link up jsonArray to the 2nd Add
createArrayBuilder
方法将返回JsonArrayBuilder
对象,您不应执行显式类型转换。 因此,首先创建数组生成器,然后向其中添加Integers
JsonArrayBuilder jsonArray = Json.createArrayBuilder();
for (Integer num: nums) {
jsonArray.add(num);
}
然后最后调用将构建JsonArray
build
方法
JsonArray array = jsonArray.build();
最终解决方案 (感谢Deadpool )
Map<String, Object> config = new HashMap<String, Object>();
JsonBuilderFactory factory = Json.createBuilderFactory(config);
JsonArrayBuilder jsonArrayBuilder = Json.createArrayBuilder();
for (Integer num: nums)
jsonArrayBuilder.add(temp); // Note: adding to the Array Builder here
// Now add to the final object
JsonObject obj = factory.createObjectBuilder()
.add("id", id)
.add("nums", jsonArrayBuilder) /* Note the Array Builder is passed in */
.build();
// The full object is complete now and can be printed
// It looks like: { "id":"string", "nums":[4,6,1,2] }
System.out.println("Object: \n" + obj.toString());
我在您的代码中看到,您已经在循环中使用了Integer类,它是原始类型int的对象类型包装器。 所以调用jsonArray.add应该可以工作,因为num是一个对象而不是原始类型。
for (Integer num: nums) // Assume a List<Integer> nums
jsonArray.add(num);
也许您应该尝试使用此代码。
for(Integer num : nums)
jsonArray.add(num.intValue());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.