如何为JSON对象列表设置父节点?现有Java代码失效求助
如何为JSON对象列表添加父节点?
首先得提一句:你期望的目标JSON结构里有个小语法问题——"results":{[ ... ]}是不对的,数组应该直接作为results的值,正确的结构应该是:
{"results": [ {"date":"2013-11-19", "time":"10:30"}, {"date":"2013-11-19", "time":"12:20"} ]}
回到你的代码,逻辑本身是没问题的,但可能是细节没处理好导致没生效。我猜你用的是org.json库(从代码里的JSONObject和JSONArray类来看),下面给你完整的可运行解决方案:
步骤1:确保依赖正确
如果是Maven项目,先在pom.xml里引入org.json的依赖:
<dependency> <groupId>org.json</groupId> <artifactId>json</artifactId> <version>20240303</version> <!-- 用最新稳定版本即可 --> </dependency>
步骤2:完整代码示例
import org.json.JSONArray; import org.json.JSONObject; import java.util.ArrayList; import java.util.List; public class JsonParentNodeExample { public static void main(String[] args) { // 1. 构建原始的JSON对象列表 List<JSONObject> itemList = new ArrayList<>(); // 添加第一个时间对象 JSONObject timeItem1 = new JSONObject(); timeItem1.put("date", "2013-11-19"); timeItem1.put("time", "10:30"); itemList.add(timeItem1); // 添加第二个时间对象 JSONObject timeItem2 = new JSONObject(); timeItem2.put("date", "2013-11-19"); timeItem2.put("time", "12:20"); itemList.add(timeItem2); // 2. 创建包含父节点的顶层JSON对象 JSONObject parentJsonObject = new JSONObject(); parentJsonObject.put("results", new JSONArray(itemList)); // 3. 输出最终的JSON字符串(带缩进更易读) System.out.println(parentJsonObject.toString(4)); } }
运行结果
这段代码运行后会输出格式化后的正确JSON:
{ "results": [ { "date": "2013-11-19", "time": "10:30" }, { "date": "2013-11-19", "time": "12:20" } ] }
可能的问题排查
如果你的代码还是没生效,大概率是这几个原因:
- list里的元素不是JSONObject:如果你的
list装的是普通Java对象(比如自定义的Time类),需要先把每个对象转成JSONObject,不能直接丢进JSONArray。 - 没正确输出结果:你是不是没调用
parentJsonObject.toString()?直接打印对象可能会得到内存地址,而不是JSON字符串。 - 依赖版本问题:旧版本的
org.json库可能有兼容性问题,建议升级到最新稳定版。
内容的提问来源于stack exchange,提问作者SST
相关产品推荐
相关产品推荐

