Java JSON 格式帮助

标签 java json

我正在将以下字符串检索到 json 数组中。代码如下所示并打印结果:

public JSONArray selectGrades(ArrayList<String> dates) {
    JSONArray jArray = new JSONArray();
    ArrayList<String> grades= new ArrayList<String>();
    DbConnector connect = new DbConnector();
    for (int i = 0; i < dates.size(); i++) {
        String selectDetailsQuery = "SELECT grade FROM classes where exam_date = '" + dates.get(i)"'";
        //System.out.println(selectDetailsQuery);
        ResultSet rs = connect.executeQuery(selectDetailsQuery);
        try {

            while (rs.next()) {
                grades.add(rs.getString(1));
                jArray.put(grades);
                grades.clear();
            }

            System.out.println("JSON Array" + jArray);

        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    //close all rs,stat,connection
    connect.close();
    return jArray;
}

JSON 打印出来: JSON 数组 [[A,A,B,C,D]] JSON 数组 [[A,A,B,C,D,C,C,C,D,A]] JSON 数组 [[A,A,B,C,D,C,C,C,D,A,D,A,B,B,A]]

它的作用是不断添加到我在循环时创建的 JSON 数组中。我需要的是这个结果:

JSON Array [["A,A,B,C,D"]]
JSON Array [["A,A,B,C,D"],["C,C,C,D,A"]]
JSON Array [["A,A,B,C,D"],["C,C,C,D,A"],["D,A,B,B,A"]]

我被困在这个问题上几个小时了。将不胜感激所提供的任何帮助。谢谢。

最佳答案

grades 列表的创建移至 for 循环中:

DbConnector connect = new DbConnector();
for (int i = 0; i < dates.size(); i++) {
    ArrayList<String> grades= new ArrayList<String>();

另外,我不知道 cmt 来自哪里,但您的 while 循环需要看起来更像这样:

        while (rs.next()) {
            grades.add(rs.getString(1));
        }
        jArray.put(grades);

更新

对于您要求的输出,您真正需要的是这样的:

char separator = "";
StringBuilder sb = new StringBuilder();

while (rs.next()) {
    sb.append(separator).append(rs.getString(1));
    separator = ",";
}

jArray.put(new JSONArray(sb.toString()));

但请注意,您正在创建的数据结构是一个数组,其元素是只有一个元素的数组,并且它们包含的元素是一个字符串(“A,B,C,...”)。 Java 的等价物是 string[][]。这里有一种代码味道,我认为可能有更好的方法来表示您的数据,但由于我不知道如何使用数据,所以我无法真正建议最好的方法。

关于Java JSON 格式帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6883812/

相关文章:

java - 在多线程上 - 方法被调用两次

java - 替代数千个 if-then-else 语句

php - 无法运行查询 : SQLSTATE[HY093]: Invalid parameter number: parameter was not defined using webservice

json - 如何在 Amazon 的 cloudformation 模板中列出现有子网?

javascript - 面包屑的自定义 GTM 变量

java - 在 openshift 中的 tomcat 中部署 Spring MVC web app .war 文件导致空白页面

java - URL 中有效图像的正则表达式

java - ForEach 循环迭代从外部类获取的 ArrayList

javascript - JavaScript中如何检查一个JS对象的所有键和值是否存在于另一个JS对象中?

json - 如何从 Spring MVC Controller 进行 REST 调用并按原样返回响应