首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Google : org.json.JSONArray不能转换为json对象

Google : org.json.JSONArray不能转换为json对象
EN

Stack Overflow用户
提问于 2013-10-10 18:15:30
回答 1查看 459关注 0票数 1

我从mysql数据库表中获取纬度和经度值,其中两个字段的数据类型都是双倍的,在php文件中,我将这些值放入数组中,并将它们作为对json的响应发送。我的logcat显示这些值是正确的,但它也表示

"org.json.JSONArray不能转换为json对象“

我无法在地图上看到我想要的结果,但地图上还有其他地方。下面是我的java代码部分,它从php获取值。因此,我如何处理这个转换,以获得这些值,因为它们来自php,这样我就可以看到数据库中存储的位置。

代码语言:javascript
复制
JSONObject json_user1 = new JSONObject(responseFromPHP);

        JSONObject json_user2 = json_user1.getJSONObject("latlong");

        double latitude=Double.parseDouble((json_user2.getString(TAG_LATITUDE)));

        double longitude=Double.parseDouble((json_user2.getString(TAG_LONGITUDE)));
                    map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map))
                .getMap();
            Marker Lahore = map.addMarker(new MarkerOptions().position(
                    new LatLng(latitude, longitude))
                .title("Lahore"));
         // Move the camera instantly to hamburg with a zoom of 15.
            map.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(latitude, longitude), 5));

            // Zoom in, animating the camera.
            map.animateCamera(CameraUpdateFactory.zoomTo(10), 2000, null);

LogCAT:

代码语言:javascript
复制
10-10 22:49:47.655: D/Show lat n long:(30670): {"success":1,"latlongs":[{"longitude":"74.3436","latitude":"31.5497"}]}
10-10 22:49:47.655: W/System.err(30670): org.json.JSONException: Value [{"longitude":"74.3436","latitude":"31.5497"}] at latlongs of type org.json.JSONArray cannot be converted to JSONObject
10-10 22:49:47.660: W/System.err(30670):    at org.json.JSON.typeMismatch(JSON.java:100)
10-10 22:49:47.660: W/System.err(30670):    at org.json.JSONObject.getJSONObject(JSONObject.java:573)
10-10 22:49:47.660: W/System.err(30670):    at com.DRMS.disas_recovery.MainActivity$LoadMap.onPostExecute(MainActivity.java:80)
10-10 22:49:47.660: W/System.err(30670):    at com.DRMS.disas_recovery.MainActivity$LoadMap.onPostExecute(MainActivity.java:1)
10-10 22:49:47.665: W/System.err(30670):    at android.os.Handler.dispatchMessage(Handler.java:99)

PHP代码:

代码语言:javascript
复制
<?php


$response = array();


require_once 'include/DB_Functions.php';
    $db = new DB_Functions();

$result = mysql_query("SELECT latitude, longitude FROM tbl_map WHERE map_id=1") or die(mysql_error());



if (mysql_num_rows($result) > 0) {

    $response["latlongs"] = array();

    while ($row = mysql_fetch_array($result)) {

        $latlong = array();
        $latlong["latitude"] = $row["latitude"];
        $latlong["longitude"] = $row["longitude"];
        array_push($response["latlongs"], $latlong);
    }
    $response["success"] = 1;
    // echoing JSON response
    echo json_encode($response);
} else {
    // no products found
    $response["success"] = 0;
    $response["message"] = "Error nothing found";

    // echo no users JSON
    echo json_encode($response);
}
?>
EN

回答 1

Stack Overflow用户

发布于 2013-10-10 18:18:06

你的问题就在这里

代码语言:javascript
复制
JSONObject json_user2 = json_user1.getJSONObject("latlong");

json_user1.get("latlong")是一个JSONArray而不是JSONObject。您可以判断,因为字符串以[而不是{开头,后者分别对应于ArrayObject

试试看以下几点。

代码语言:javascript
复制
JSONArray json_user2 = json_user1.getJSONArray("latlong");

对你来说应该很好。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19303197

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档