【发布时间】:2020-10-10 08:19:22
【问题描述】:
我正在实现 Java SpringBoot 来制作 RestAPI 应用程序。我坚持下面的循环。问题似乎与 sub1_arr.add(subResult1);
我已经进行了一些测试:
为每次迭代打印 SubResult1:println 显示正确的元素,但是当添加到 sub1_arr 时,它变得重复。
Test 1(如代码所示):这是假设我编写的初始代码。输出不正确,重复输出
测试 2(如代码所示):输出正确,但为字符串形式。
while(rs.next())
{
if(rs.getString("status").equals("FAILED")) {
obj.put("result", "failed");
obj.put("msg", rs.getString("msg"));
}
else {
//mainResult - ignore for a while
mainResult.put("layer1_id", rs.getString("layer1_id"));
mainResult.put("layer1_name", rs.getString("layer1_name"));
//subResult - layer2
subResult1.put("layer2_id", rs.getString("layer2_id"));
subResult1.put("layer2_name", rs.getString("layer2_name"));
//test 1 - having incorrect output with all the element become duplicate
sub1_arr.add(subResult1);
//test 2 - having correct output but the output become string with \"xxx\"
sub1_arr.add(subResult1.toString());
}
}
//adding sub array to main result
mainResult.set("layer2", sub1_arr);
获取输出(意外)
{"layer2":[
{"layer2_id" : "3", "layer2_name" : "name_3"},
{"layer2_id" : "3", "layer2_name" : "name_3"},
{"layer2_id" : "3", "layer2_name" : "name_3"}
]}
预期输出
{"layer2":[
{"layer2_id" : "1", "layer2_name" : "name_1"},
{"layer2_id" : "2", "layer2_name" : "name_2"},
{"layer2_id" : "3", "layer2_name" : "name_3"}
]}
【问题讨论】: