Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法解析google places JSON响应-org.JSON.JSONException_Java_Android_Json_Google Places Api - Fatal编程技术网

Java 无法解析google places JSON响应-org.JSON.JSONException

Java 无法解析google places JSON响应-org.JSON.JSONException,java,android,json,google-places-api,Java,Android,Json,Google Places Api,我从GooglePlacesAPI收到一个JSON响应,我正在尝试解析它。但是我得到了org.json.JSONException 这是我的JSON响应 我正在使用以下代码检索格式化的地址 try { Log.e("test-ttt", jsonResults.toString()); // Create a JSON object hierarchy from the results JSONObject jsonObj = new J

我从GooglePlacesAPI收到一个JSON响应,我正在尝试解析它。但是我得到了org.json.JSONException

这是我的JSON响应

我正在使用以下代码检索格式化的地址

  try {

        Log.e("test-ttt", jsonResults.toString());

        // Create a JSON object hierarchy from the results
        JSONObject jsonObj = new JSONObject(jsonResults.toString());

        JSONObject placeDetailsJsonArray = jsonObj.getJSONObject("result");

        // Extract the Place descriptions from the results
        placeDetails = "NAME: " + placeDetailsJsonArray.getJSONObject("name").toString();
        placeDetails += "ADDRESS: " + placeDetailsJsonArray.getJSONObject("formatted_address").toString();


    } catch (JSONException e) {
        Log.e(TAG, "Cannot process JSON results", e);
    }
这是我得到的logcat异常:

org.json.JSONException: Value South Point School at name of type java.lang.String cannot be converted to JSONObject
        at org.json.JSON.typeMismatch(JSON.java:100)
        at org.json.JSONObject.getJSONObject(JSONObject.java:578)
        at manasthemarvel.triptimeline.PlaceAPI.getPlaceDetails(PlaceAPI.java:78)
        at manasthemarvel.triptimeline.placeInfo.doInBackground(placeInfo.java:14)
        at manasthemarvel.triptimeline.placeInfo.doInBackground(placeInfo.java:10)
        at android.os.AsyncTask$2.call(AsyncTask.java:288)
        at java.util.concurrent.FutureTask.run(FutureTask.java:237)
        at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
        at java.lang.Thread.run(Thread.java:841)


        // Extract the Place descriptions from the results
        placeDetails = "NAME: " + placeDetailsJsonArray.getJSONObject("name").toString();
        placeDetails += "ADDRESS: " + placeDetailsJsonArray.getJSONObject("formatted_address").toString();

我做错了什么

我不知道什么是
jsonResults
,但很可能在这里执行
jsonResults.toString()

JSONObject jsonObj = new JSONObject(jsonResults.toString());
未提供有效的JSON字符串。您应该检查您正在处理的内容(do
Log.d(“X”,jsonResults.toString());
)而不是显示远程API生成的内容。

您将“名称”和“格式化的地址”视为JSONObject,而不是普通的键/值对

试试这个:

JSONObject placeDetailsJsonArray = jsonObj.getJSONObject("result");
String name = placeDetailsJsonArray.getString("name");

名称和格式化的地址都是JSON中的字符串,但您试图将其作为JsonObject获取。而是使用类似

placeDetails = "NAME: " + placeDetailsJsonArray.get("name").getAsString();
placeDetails += "ADDRESS: " + placeDetailsJsonArray.get("formatted_address").getAsString();