如何构建含数组的JSONObject?现有代码无法生成目标JSON结构
解决方案
你需要先创建JSONArray来存储多个用户对象,再将这个数组放入外层的JSONObject中,对应键名为"pays"。修改后的代码如下:
Faker faker = new Faker(); // 外层JSON对象,用于包裹数组 JSONObject outerJson = new JSONObject(); // 创建存储用户对象的数组 JSONArray paysArray = new JSONArray(); // 生成第一个用户对象 JSONObject user1 = new JSONObject(); user1.put("lastName", faker.name().lastName()); user1.put("firstName", faker.name().firstName()); // 目标JSON中phoneNumber是数字类型,需将Faker返回的带格式字符串转成数字 user1.put("phoneNumber", Long.parseLong(faker.phoneNumber().replaceAll("[^0-9]", ""))); user1.put("amount", 1000); paysArray.put(user1); // 生成第二个用户对象 JSONObject user2 = new JSONObject(); user2.put("lastName", faker.name().lastName()); user2.put("firstName", faker.name().firstName()); user2.put("phoneNumber", Long.parseLong(faker.phoneNumber().replaceAll("[^0-9]", ""))); user2.put("amount", 1000); paysArray.put(user2); // 将数组绑定到外层JSON的"pays"字段 outerJson.put("pays", paysArray); return outerJson;
关键说明:
- 新增
JSONArray来管理多个用户对象,替代原来直接生成单个对象的逻辑 - 外层
JSONObject负责包裹数组,键名严格匹配目标结构的"pays" - 处理
phoneNumber类型:Faker默认返回带分隔符的字符串,需要清理非数字字符后转成Long类型,才能匹配目标JSON的数字格式
如果需要生成更多用户对象,用for循环批量创建即可,不用重复编写对象初始化代码。
内容的提问来源于stack exchange,提问作者Laplas
相关产品推荐
相关产品推荐

