【发布时间】:2018-03-09 16:14:08
【问题描述】:
我有一个名为 testTable 的表(在 sql server 2014 中),我有一个名为假期的列,在我的情况下,我在这个列中有两个值,例如(2018-03-02 和 2018-04-02)和我使用此方法获取此值,然后将其放入 json 对象中,这是我的代码:
public static JSONArray convertToJSON(ResultSet resultSet) throws Exception {
JSONArray jsonArray = new JSONArray();
JSONObject obj = new JSONObject();
while (resultSet.next()) {
int total_rows = resultSet.getMetaData().getColumnCount();
for (int i = 0; i < total_rows; i++) {
jsonArray.put(obj.put(resultSet.getMetaData().getColumnLabel(i+1)
.toLowerCase(), resultSet.getObject(i+1)));
}
}
System.out.println(jsonArray);
return jsonArray;
}
但是当我运行这段代码时,我只在我的数组中写入了两次最后的数据,它看起来像这样:
[{"startDate":2018-03-02},{"startDate":2018-03-02}]
但它应该是这样的:
[{"startDate":2018-03-02},{"startDate":2018-03-03}]
我的意思是它会将最后一个数据写入两次,但是当我尝试在控制台中打印它时,我得到了正确的值? 我应该更改什么才能正确获取所有 startDate 值?
【问题讨论】:
-
您正在重用您的
JSONObject,而不是为每次迭代创建一个新的... -
嗨 @MarkRotteveel 感谢您的评论,如果我在每次 for 循环迭代中创建 jsonObject 并将此对象添加到 Json 数组中(这将解决我的问题?)