javax.json:从List <integer>构建一个JSONArray并将其添加到JSONObject

时间:2019-05-13 01:48:33

标签: java json

简单的任务,但我找不到解决方法。

我的输出JSON必须是

{
   "id" : "somestring", 
   "nums" : [44,31,87,11,34]
}

我在javax.json / JSONObject中使用JsonArray库。有一个List<Integer>,其中包含第二个字段的值。这些不是对象,而是纯数字。我不知道如何从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

注意-无法直接添加整数, enter image description here

4 个答案:

答案 0 :(得分:1)

yourdf=df.mask(df.apply(pd.to_numeric,errors='coerce',axis=1).notnull(),'BUS') yourdf Out[631]: 27 72 27.1 72.1 None None.1 None.2 None.3 0 BUS BUS None None None None None None 1 MRT MRT None None None None None None 2 MRT MRT None None None None None None 3 MRT MRT None None None None None None 4 BUS BUS BUS BUS None None None None 5 BUS BUS BUS BUS None None None None 6 BUS BUS None None None None None None 方法将返回createArrayBuilder对象,您不应进行显式类型转换。因此,首先创建数组生成器,然后向其中添加JsonArrayBuilder

Integers

然后最后调用JsonArrayBuilder jsonArray = Json.createArrayBuilder(); for (Integer num: nums) { jsonArray.add(num); } 方法,该方法将构建build

JsonArray

答案 1 :(得分:0)

我在您的代码中看到您已经在循环中使用 Integer 类,该类是原始类型 int的对象类型包装器 。因此调用 jsonArray.add 应该可以工作,因为num是一个对象而不是原始类型。

for (Integer num: nums) // Assume a List<Integer> nums
            jsonArray.add(num); 

答案 2 :(得分:0)

也许您应该尝试使用此代码。

for(Integer num : nums)
   jsonArray.add(num.intValue());

答案 3 :(得分:0)

最终解决方案(感谢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());