JSONObject getString(String.valueof(可变整数)) 不工作

JSONObject getString(String.valueof(variable integer)) not working

我搜索了很多答案或解释为什么 "JSONObject.getString()" 不起作用。 首先这是来自 php 服务器

的响应
{"3":["S1","2013","Final"],"2":["S0","2010","Mid"],"1":["S6","2015","Final"]}

这是我的代码:

        CCNERequest.add(new BasicNameValuePair("Semester", "S"));
        CcneJsonString = CCNEexams.getJSONFromUrl(CCNEUrl, CCNERequest);
        if (CcneJsonString != null) {
            try {
                JSONObject jObj = new JSONObject(CcneJsonString);
             for (int i = 0; i < jObj.length(); i++) {

                    JSONArray jsonArray = new JSONArray(
                            jObj.getString(values[i]));
              }

这段代码对我来说工作正常,而 values[] 是一个这样实现的数组:

public String[] values = { "1", "2", "3", "4", "5", "6", "7", "8", "9",
        "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20",
        "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31",
        "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42",
        "43", "44", "45", "46", "47", "48", "49", "50" };

现在我将来可能有超过 1000 个 JSONObject,我不想实现数组值[],因为我想写出漂亮且高效的代码,所以我尝试将数组值[i]替换为像这样的 JSONObject 的确切数量:

CCNERequest.add(new BasicNameValuePair("Semester", "S"));
        CcneJsonString = CCNEexams.getJSONFromUrl(CCNEUrl, CCNERequest);
        if (CcneJsonString != null) {
            try {
                JSONObject jObj = new JSONObject(CcneJsonString);
             for (int i = 0; i < jObj.length(); i++) {

                    JSONArray jsonArray = new JSONArray(
                            jObj.getString(String.valueOf(i));
              }

这样我就不必在代码中实现 values[] 了,但不幸的是这不起作用,它在

上抛出异常
JSONArray jsonArray = new JSONArray(
                            jObj.getString(String.valueOf(i));

所以我的问题是,为什么在 JSONObject.getString() 中将转换后的变量赋给字符串时会出现异常错误,并且他们是否有任何方法可以摆脱字符串值数组 [] 并使用另一种方法可以在不实现静态的情况下给出相同的结果??

在第一次循环迭代中,i为0,但JSONObject中没有key 0。这会导致 JSONException。

你应该从 1 开始循环。