Java中如何将weight字段插入到患者摘要JSON的首个对象中?
解决方法分析与代码修改
你的问题出在新建了一个独立的JSONObject来存放weight,然后直接把这个对象追加到了data数组中,所以weight才会变成数组里的单独元素。要实现目标结构,我们需要找到data数组里的第一个患者对象,直接把weight字段插入到这个已有对象中。
修改后的完整代码示例
假设你的get_patient_summary(p_id)方法返回的是包含data数组和success字段的完整外层JSONObject:
// 获取完整的患者摘要结果(包含data数组和success) JSONObject summaryResult = new select_data().get_patient_summary(p_id); // 取出data数组 JSONArray dataArray = summaryResult.getJSONArray("data"); // 检查数组是否为空,避免空指针异常 if (!dataArray.isEmpty()) { // 获取数组中的第一个患者信息对象 JSONObject firstPatient = dataArray.getJSONObject(0); // 将weight字段插入到这个对象中 firstPatient.put("weight", weight.get(0)); } // 此时summaryResult就是你想要的目标结构
如果你的get_patient_summary(p_id)方法直接返回的是data数组(即返回类型是JSONArray),可以这样处理:
// 获取data数组 JSONArray dataArray = new select_data().get_patient_summary(p_id); // 插入weight到第一个患者对象 if (!dataArray.isEmpty()) { JSONObject firstPatient = dataArray.getJSONObject(0); firstPatient.put("weight", weight.get(0)); } // 组装成完整的目标JSON结构 JSONObject finalResult = new JSONObject(); finalResult.put("data", dataArray); finalResult.put("success", 1);
关键修改点说明
- 不再新建独立的
jInnerObject,而是直接操作data数组中已有的第一个患者对象 - 添加了数组非空检查,避免当data数组为空时抛出
IndexOutOfBoundsException - 直接在目标对象上调用
put("weight", ...),将字段插入到正确的位置
内容的提问来源于stack exchange,提问作者zinon
相关产品推荐
相关产品推荐

