我想要一个JSON输出,其中“ postCode”为“ parent”,其子级为“ statusName”和“ statusCount”。
JSONObject jsonObject = New JSONObject();
JSONArray jsonArray = New JSONArray();
for (StatisticsDTO object : lstDTO) {
jsonObject.put("postCode",object.getPostalCode());
log.info(object.getPostalCode());
List <StatisticsDetailsDTO> listStat = object.getStatistics();
//log.info("listStat" : + listStat.size()); // Assuming that I have 2 postal codes.
if (listStat != null) {
for (int i = 0; i< listStat.size(); i++) {
StatisticsDetailsDTO dtostat = listStat.get(i);
jsonObject.put("statusName",dtostat.getStatName());
jsonObject.put("statusCount",dtostat.getStatCount());
jsonArray.add(jsonObject);
log.info(jsonArray.toString());
}
}
}
输出为:
12345
[{“ statusName”:“ Test1”,“ statusCount”:“ 1”}]
[{“ statusName”:“ Test2”,“ statusCount”:“ 2”},{“ statusName”:“ Test2”,“ statusCount”:“ 2”}]
[{“ statusName”:“ Test3”,“ statusCount”:“ 3”},{“ statusName”:“ Test3”,“ statusCount”:“ 3”,{“ statusName”:“ Test3”,“ statusCount“:” 3“}]
67890
[{“ statusName”:“ Test4”,“ statusCount”:“ 4”},{“ statusName”:“ Test4”,“ statusCount”:“ 4”},{“ statusName”:“ Test4”, “ statusCount”:“ 4”},{“ statusName”:“ Test4”,“ statusCount”:“ 4”}]
[{“ statusName”:“ Test5”,“ statusCount”:“ 5”},{“ statusName”:“ Test5”,“ statusCount”:“ 5”},{“ statusName”:“ Test5”, “ statusCount”:“ 5”},{“ statusName”:“ Test5”,“ statusCount”:“ 5”},{“ statusName”:“ Test5”,“ statusCount”:“ 5”}]
[{“ statusName”:“ Test6”,“ statusCount”:“ 6”},{“ statusName”:“ Test6”,“ statusCount”:“ 6”,{“ statusName”:“ Test6”,“ statusCount“:” 6“},{” statusName“:” Test6“,” statusCount“:” 6“},{” statusName“:” Test6“,” statusCount“:” 6“},{” statusName“:” Test6“,” statusCount“:” 6“},{” statusName“:” Test6“,” statusCount“:” 6“}]
结果应该类似于以下内容,但格式为JSON。我注意到该值重复出现。
邮政编码:12345
邮政编码:67890
答案 0 :(得分:0)
您应该在每次迭代中创建jsonObject
,以避免重复值。
检查此代码:
JSONArray jsonArray = New JSONArray();
for (StatisticsDTO object : lstDTO) {
JSONObject jsonObject = New JSONObject(); //Move it here
jsonObject.put("postCode",object.getPostalCode());
log.info(object.getPostalCode());
List <StatisticsDetailsDTO> listStat = object.getStatistics();
//log.info("listStat" : + listStat.size()); // Assuming that I have 2 postal codes.
JSONArray tempJsonArray = New JSONArray();
if (listStat != null) {
for (int i = 0; i< listStat.size(); i++) {
StatisticsDetailsDTO dtostat = listStat.get(i);
jsonObject.put("statusName",dtostat.getStatName());
jsonObject.put("statusCount",dtostat.getStatCount());
jsonArray.add(jsonObject);
tempJsonArray.add(jsonObject);
}
}
log.info(tmepJsonArray.toString());
}