本文介绍了Android的JSON解析问题,java.lang.String中不能转换到的JSONObject的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我用下面的code解析JSON的Android应用程序
I am using the following code to parse JSON in android application
JSONArray category = null;
JSONParser jParser = new JSONParser();
JSONObject json = jParser
.getJSONFromUrl("http://www.inchid.com/mobile/cate.php?cType=Product");
try {
category = json.getJSONArray("cate");
for (int i = 0; i < category.length(); i++) {
JSONObject c = category.getJSONObject(i);
String name = c.getString("cate_name");
}
} catch (JSONException e) {
e.printStackTrace();
} catch (Exception e) {
// TODO: handle exception
System.out.println("ERRRORRRRRRRRRRRRRRRRRR");
}
JSONParser类
public JSONObject getJSONFromUrl(String url) {
// Making HTTP request
try {
// defaultHttpClient
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, "iso-8859-1"), 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 parse the string to a JSON object
try {
jObj = new JSONObject(json);
} catch (JSONException e) {
Log.e("JSON Parser", "Error parsing data " + e.toString());
}
// return JSON String
return jObj;
}
这让我的应用程序强制关闭和下面的图片是logcat的的屏幕截图。
This makes my application to force close and below picture is the screen shot of logcat.
logcat的错误是:
Logcat Error is:
错误解析数据org.json.JSONException:java.lang.String类型的值i»¿不能转换为JSONObject的
推荐答案
有些时候,当您从那个时候,当您撰写字符串一些未想字符添加服务器获取数据发生什么。所以,试试这个它会帮助你。
Some times what happen when you are fetching data from the server at that time some un-wanted characters was added when you compose the String. So try this it will help you.
而不是从
return jObj;
到
return new JSONObject(json.substring(json.indexOf("{"), json.lastIndexOf("}") + 1));
同样在源字符串中删除隐藏字符。
Also remove hidden characters on source String.
这篇关于Android的JSON解析问题,java.lang.String中不能转换到的JSONObject的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!