在Java中,数组JsonArray只接受for循环中最后一个JsonObject
我需要修改使用javax.json.JsonObject
和javax.json.JsonArray
库来处理JSON的现有旧代码。因为这些都是接口,所以我不能像过去在JSON的帮助下那样创建新对象并在for循环中添加所需的数据。简单库。
我需要创建一个包含不同JsonObject的JsonArray,但最终输出只包含最后一个JsonObject。代码如下:
import javax.json.JsonArray;
import javax.json.JsonObject;
class Test {
public void myMethod() {
Map<String, String> ep = null;
JsonArray response = null;
JsonObject epObj = null;
JsonObject epDetails = null;
try {
ep = getRequiredEp();
if (ep != null && !ep.isEmpty()) {
for (String uuid : ep.keySet()) {
ERU router = ERU.findByNFuuid(em, uuid);
if (router != null) {
ERD unit = router.findCurrent(em);
epDetails = Json.createObjectBuilder()
.add("name", ep.get(uuid))
.add("devId", unit.unit.getId())
.add("clientId", unit.store.id).build();
epObj = Json.createObjectBuilder()
.add(uuid, epDetails).build();
response = Json.createArrayBuilder()
.add(epObj).build();
}
}
logger.info("FINAL RESPONSE = {}", response);
}
} catch (Exception e) {
logger.info(e.getMessage(), e);
}
}
}
我的JsonObject包含两个对象。但当我打印最终响应时,它只给出最后一个对象。请建议如何在JsonArray中添加这两个对象
# 1 楼答案
这是因为您正在为每个迭代的响应分配一个新的JsonArray。 我认为应该在循环内部使用单个数组生成器,在外部构建数组,如下所示: