Java创建JSONArray时DEMO1未加载、出现空对象的问题排查
问题原因与解决方法
你的代码存在两个核心问题,导致DEMO1未出现且有空对象:
- 重复修改同一个JSONObject实例:你先创建了
seg对象并设置s_code=DEMO1,但后续没有新建对象,直接对同一个seg执行put操作覆盖成了DEMO2,所以最终加入数组的seg是已经被修改后的DEMO2数据,DEMO1的内容被完全覆盖。 - 未给
obj对象赋值:你创建了obj对象,但没有调用put方法添加任何属性,所以这个对象是空的,加入数组后就显示为{}。
修正后的代码如下:
Map<String, Object> payload = objectMapper.convertValue(request.getPayload(), Map.class); // 为DEMO1创建独立的JSONObject JSONObject seg1 = new JSONObject(); seg1.put("s_code", "DEMO1"); seg1.put("v_type", "backend"); // 为DEMO2创建独立的JSONObject JSONObject seg2 = new JSONObject(); seg2.put("s_code", "DEMO2"); seg2.put("v_type", "frontend"); JSONArray segment = new JSONArray(); segment.add(seg1); segment.add(seg2); payload.put("segments", segment);
这样修改后,数组里会包含两个独立的JSONObject,分别对应DEMO1和DEMO2的内容,也不会出现空对象。
内容的提问来源于stack exchange,提问作者Destiel
相关产品推荐
相关产品推荐

