java.lang.String 类型的值结果不能转换为 JSONObject



我遇到字符串无法转换为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);

相关内容

  • 没有找到相关文章

最新更新