我正在将json数组转换为不存在任何标记的字符串数组。我千方百计地尝试,但没有成功。
json数组:-
validValues:“01_Abacus”、"02_AlarmClock“、"03_Basketball”、"04_Beaker“、"55_Watch”
将json数组转换为字符串值的代码
if (jsonComponentObj.has(TAG_VALID_VALUES)) {
String value = jsonComponentObj.getString(TAG_VALID_VALUES);
Logs.e("value " + value);
if (!value.equals("null")) {
JSONArray jsonArray = jsonComponentObj
.getJSONArray(TAG_VALID_VALUES);
if (jsonArray != null) {
ArrayList<String> stringArray = new ArrayList<String>();
for (int j = 0; j < jsonArray.length(); j++) {
try {
JSONObject jsonObject = jsonArray
.getJSONObject(j);
stringArray.add(jsonObject.toString());
} catch (JSONException e) {
Logs.e("Exception: "+e.toString());
e.printStackTrace();
}
}
}
}
}
异常:
org.json.JSONException: Value 01_Abacus at 0 of type java.lang.String cannot be converted to JSONObject
如果有人有主意。请回复。提前谢谢..。
发布于 2014-09-08 22:45:47
因为validValues
JSONArray只包含字符串而不是JSONObject
,所以.so从JSONArray获取所有值,如下所示:
for (int j = 0; j < jsonArray.length(); j++) {
String str_value = jsonArray.optString(j);
stringArray.add(str_value);
}
发布于 2014-09-08 22:46:03
您的json数组包含Strings
而不是json object
.Therefore以直接使用getString()
从json数组获取字符串,因此请更改
JSONObject jsonObject = jsonArray.getJSONObject(j);
stringArray.add(jsonObject.toString());
至
stringArray.add(jsonArray.getString(j));
或
stringArray.add(jsonArray.optString(j));
发布于 2014-09-08 22:49:01
您应该使用optString(int)
强制数组中的字符串值。如果数组中的值不是字符串,则使用getString(int)
会导致问题。
for (int j = 0; j < jsonArray.length(); j++) {
String value = jsonArray.optString(j);
stringArray.add(value);
}
如果要提供默认值,请使用optString(int, String)
。
https://stackoverflow.com/questions/25738143
复制相似问题