JSONObject getString(String.valueof(变量整数))不起作用

时间:2015-03-28 21:42:58

标签: java android jsonobject

我已经搜索了很多答案或解释为什么“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个JSONObjects,我不想实现数组值[],因为我想要编写好的代码并且效率很高,所以我试着用精确的方法替换数组值[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));
              }

通过这种方式,我不必在代码中实现先前的值[],但遗憾的是这不起作用,它会抛出异常

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

所以我的问题是,为什么它在JSONObject.getString()中将转换后的变量赋予字符串时会发生异常错误,并且是他们以任何方式去除字符串值数组[]并使用另一种方法我没有实现静态的结果?

1 个答案:

答案 0 :(得分:1)

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

你应该从1开始循环。