我遇到字符串无法转换为JSONObject的问题。任何人都可以帮助解决这个问题吗?谢谢,非常感谢你的帮助。
protected void onPostExecute(String result) {
if (result==null || result.length()==0){
// no result:
return;
}
//clear the list
moviesList.clear();
try {
//turn the result into a JSON object
JSONObject responseObject = new JSONObject("results");
// get the JSON array named "results"
JSONArray resultsArray = responseObject.getJSONArray(result);
// Iterate over the JSON array:
for (int i = 0; i < resultsArray.length(); i++) {
// the JSON object in position i
JSONObject messageObject = resultsArray.getJSONObject(i);
// get the primitive values in the object
String title = messageObject.getString("title");
String details = messageObject.getString("synopsis");
//put into the list:
Movie movie = new Movie(title, details, null,null);
moviesList.add(movie);
}
} catch (JSONException e) {
e.printStackTrace();
}
//refresh listView:
adapter.notifyDataSetChanged();
}
}
结果有价值
错误在以下行中:
JSONObject responseObject = new JSONObject("results");
String obj=JSONObject.quote(YourData);
JSONArray lArray=new JSONArray(obj);
// or simply Delete the prefix 'results' from your php Code
// $res2=array("results"=>$response);
// and you will retrive directelly your JsonArray like
JSONArray lArray=new JSONArray(YouData);
看起来你只是混淆了这两行,试试这样:
//turn the result into a JSON object
JSONObject responseObject = new JSONObject(result);
// get the JSON array named "results"
JSONArray resultsArray = responseObject.getJSONArray("results");
这是假设你从某个地方得到的JSON响应包含一个JSONObject,而JSONObject又在"结果"中包含JSONArray。
从代码示例中的注释来看,情况就是如此,这只是由于命名相似而导致的简单混淆的情况。
检查 JSON 字符串本身是否以 [例如
[{"hello":"goodbye","name":"bob","age":26}]
如果这样做,这意味着它不是JSONObject,而是JSONArray。尝试更改
JSONObject responseObject = new JSONObject("results");
// get the JSON array named "results"
JSONArray resultsArray = responseObject.getJSONArray(result);
到类似的东西
JSONArray responseArray = new JSONArray("results");
JSONObject resonseObject = responseArray.toJSONObject(responseArray);
-
那是因为你的
JSONObject
格式是错误的。看如何在Java中将字符串转换为JSONObject.只是"results"
不是JSON
.尝试类似这样的东西:{"result":"blahblah"}
-
或者您错误地在
result
中包含双引号写作JSONObject responseObject = new JSONObject("results");
由于
result
已经是一个字符串,请尝试将该行替换为:JSONObject responseObject = new JSONObject(results);