3

1.我有这样的 json 对象,我如何才能访问 android 中的所有值 2.在
有人反对之前我想说我已经在 stackoverflow 中搜索了类似的示例,但这些示例包含 JSONObject,然后是 JSONArray
3.Here in我的情况一切都是 JSONObject 所以我有点困惑

{
"1":
{"sno":"10","latitude":"31.249441437085455","longitude":"75.70003598928452"},

"2":
{"sno":"11","latitude":"31.249398442090207","longitude":"75.70003397762775"}
}

这就是我制作 JSONObject
1 的方式。下面的代码返回了我的输出,就像所有 JSONObject
2 一样。有没有办法将“1”和“2”制作为 JSONArray?

$select_rows = "select sno,latitude,longitude from activities where username='$username'";
if ($result = mysql_query($select_rows)) {

$num_of_fields = mysql_num_fields($result);
$num_of_rows = mysql_num_rows($result);

 $i = 0;

    $j = 1;

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

        for ($i = 0; $i < $num_of_fields; $i++) {

            $field_name = mysql_field_name($result, $i);

            $object[$j][$field_name] = $retrieved[$field_name];
        }
        $j++;
    }
    echo json_encode($object);
}
4

3 回答 3

7

希望这可以帮助你

JSONObject jsonObject=new JSONObject(result);

            jsonObject=jsonObject.getJSONObject("1");

            Double lat=jsonObject.getDouble("latitude");




            Toast.makeText(getBaseContext(),""+ lat, Toast.LENGTH_LONG).show();
于 2014-04-27T01:50:05.970 回答
5

更好地创建一个有效JSONArray的,使事情变得更容易。创建JSON字符串时,不要附加索引。我相信您正在从 sqlite 读取数据并生成JSON字符串。

还将外部{(大括号)更改为 [(方括号)以表示为Array元素。所以你的json字符串会是这样的

[
{
    "sno": "10",
    "latitude": "31.249441437085455",
    "longitude": "75.70003598928452"
},
{
    "sno": "11",
    "latitude": "31.249398442090207",
    "longitude": "75.70003397762775"
}
]

然后,您可以简单地将其作为JSONArray

JSONArray jsonArray = new JSONArray(jsonString);

然后读取数组项中的每个元素

 for(int index = 0;index < jsonArray.length(); index++) {
    JSONObject jsonObject = jsonArray.getJSONObject(index);
 }
于 2014-04-27T02:04:39.670 回答
1

要获取您的内部 JSONObject 元素之一,您需要使用 getJSONObject(String key) 从外部获取它。

示例代码:

JSONObject item1 = myJson.getJSONObject("1");
//item1 now contains {sno:10,latitude:31.2...etc}
//now you can get the individual values out of the resulting JSON Object
//for example, getting the latitude
double lat = item1.getDouble("latitude");
于 2014-04-27T01:37:52.517 回答