2

我正在尝试查找jsonObject距离中的(即 10194)

{
   "destination_addresses" : [ "Burnaby, BC, Canada" ],
   "origin_addresses" : [ "Vancouver, BC, Canada" ],
   "rows" : [
      {
         "elements" : [
            {
               "distance" : {
                  "text" : "10.2 km",
                  "value" : 10194
               },
               "duration" : {
                  "text" : "19 mins",
                  "value" : 1118
               },
               "status" : "OK"
            }
         ]
      }
   ],
   "status" : "OK"
}

我写了这段代码,但它给了我 null

  rows = jObj.getJSONObject(TAG_ROWS);
       JSONArray elements = new JSONArray (rows.getString(TAG_ELEMENTS));
       for (int i=0; i<elements.length();i++){
            JSONObject obj = elements.optJSONObject(i);
            JSONObject distance = obj.getJSONObject(TAG_DISTANCE);
             value= distance.getString(TAG_VALUE);

任何的想法 ??

4

3 回答 3

0

根据您的JSON, evenrows是 type JSONArray,但是您正在获取行,这种方式

rows = jObj.getJSONObject(TAG_ROWS);

因此,问题。

你需要这样获取rows:-

JSONArray rows = jObj.getJSONArray(TAG_ROWS);
于 2013-04-02T08:18:20.103 回答
0

对象 'rows' 必须是 JSONArray 类型,因为它包含的是一个数组。之后,您必须执行另一个 for 并获取另一个数组,即“元素”,然后为第二个数组执行循环。你必须得到类似的东西:

rows = jObj.getJSONArray(TAG_ROWS);
 for (int i=0; i<rows.length();i++){
       JSONArray elements = new JSONArray (rows.getString(TAG_ELEMENTS));
       for (int j=0; j<elements.length();j++){
            JSONObject obj = elements.optJSONObject(j);
            JSONObject distance = obj.getJSONObject(TAG_DISTANCE);
             value= distance.getString(TAG_VALUE);
       }
 }
于 2013-04-02T08:19:14.540 回答
0

您必须执行以下操作

try {
    JSONObject jsonObj = new JSONObject(YOUR-JSON-STRING-HERE);

    String destination = jsonObj.getString("destination_addresses");
    // printing the destination and checking wheather parsed correctly
    Log.v("Destination", destination);

    JSONArray jarRow = jsonObj.getJSONArray("rows");
    for(int i=0;i<jarRow.length(); i++){
        // creating an object first
        JSONObject ElementsObj = jarRow.getJSONObject(i);
        // and getting the array out of the object
        JSONArray jarElements = ElementsObj.getJSONArray("elements");
        for(int j=0; j<jarElements.length(); j++){
            JSONObject distanceObj = jarElements.getJSONObject(j).getJSONObject("distance");
            String distanceStr = distanceObj.getString("value");
            Log.v("finally getting distance : ", distanceStr);
        }
    }

} catch (JSONException e) {
    e.printStackTrace();
}

这是来自DDMS的屏幕截图

在此处输入图像描述

于 2013-04-02T08:48:56.030 回答