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 开始循环。
我搜索了很多答案或解释为什么 "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 开始循环。