可能重复:
JSON parsing problemJSON解析适用于Android 4.0,但不是在Android <4.0
我解析一个JSON文件(有效期)。它适用于Android 4.0 - 4.0.4,但不适用于较旧的Android版本。 这是我的清单的一部分:
<uses-sdk
android:minSdkVersion="7"
android:targetSdkVersion="14" />
,这是我的解析代码:
public JSONObject getJSONFromUrl(String url) {
try {
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(
is, "UTF-8"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
json = sb.toString();
} catch (Exception e) {
Log.e("Buffer Error", "Error converting result " + e.toString());
}
try {
jObj = new JSONObject(json);
} catch (JSONException e) {
Log.e("JSON Parser", "Error parsing data " + e.toString());
}
return jObj;
}
而且上了年纪的设备我收到以下错误信息(但正如我所说的不是新的Android设备):
org.json.JSONException:java.lang.String类型的值不能被转换为的JSONObject
我完全不知道为什么它能在Android 4上工作,但不能在较旧的设备上工作。
从here
粘贴整个json在这里!或者尝试在www.jsonlint.com.tw上进行验证。我怀疑json有一些问题。 –
正如我所说(我现在再次验证与jsonlint.com)这是一个有效的JSON ...而奇怪的是,它适用于Android 4 ... – user754730
你确定org.json库的版本是两台设备上都一样?此外,增加缓冲读取器的缓冲区大小。 – wdziemia