【发布时间】:2015-09-24 10:21:48
【问题描述】:
我正在尝试设置一个 web 应用程序以通过 JSON 发送数据库表。我想毫不费力地发送所有条目。所以我把所有的字段都读出为 ArrayLists,现在我可以通过 JSON 一个一个地解析它们并发送它们。但是没有一种方便的方法可以将它们全部打包到一个 JsonArray 中吗?
这是我的代码示例:
public static JSONArray[] getDBEntries(String tablename) {
JSONArray[] js = new JSONArray[5];
Connection conn = null;
Statement st = null;
ResultSet rs = null;
ArrayList<String> text = null;
ArrayList<String> altname = null;
ArrayList<String> altname2 = null;
ArrayList<String> icd10 = null;
ArrayList<String> alphaid = null;
int index = 0;
try {
InitialContext ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/users");
conn = ds.getConnection();
st = conn.createStatement();
rs = st.executeQuery("SELECT * FROM " + tablename);
while (rs.next()) {
text.add(rs.getString("text"));
if (altname != null) {
altname.add(rs.getString("altname"));
}
if (altname2 != null) {
altname2.add(rs.getString("altname2"));
}
if (icd10 != null) {
icd10.add(rs.getString("icd10"));
}
if (alphaid != null) {
alphaid.add(rs.getString("alphaid"));
}
index++;
}
} catch (Exception ex) {
ex.printStackTrace();
} finally {
try {
if (rs != null) rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
if (st != null) st.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
if (conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
js[0] = new JSONArray(text);
js[1] = new JSONArray(altname);
js[2] = new JSONArray(altname2);
js[3] = new JSONArray(icd10);
js[4] = new JSONArray(alphaid);
return js;
}
【问题讨论】:
-
不使用 JSONArray[5],只需使用 JSONArray 及其元素即可。然后返回一个 JSONArray,其中包含每个数组作为元素。
-
@KDM 我不太确定我是否正确:如何将
ArrayList作为元素添加到JSONArray?有没有办法将多个 JSONArrays 添加到单个 JSONArray(嵌套)? -
JSONArray js = new JSONArray();js.add(new JSONArray(text));等应该可以工作。 JSONArray 可以包含所有原语以及任何其他 JSON 对象。 -
谢谢你的解释,现在清楚了