无法在android中获取json数组值

时间:2012-05-23 05:40:26

标签: android json web-services

`嗨,大家好,

请检查这个Json的格式。

{"id": "293369****","owner": {
  "name": "******",
  "id": "*****"},name": "test event","start_time": "2012-05-18T02:00:00","end_time":"2012-05-18T05:00:00","privacy": "FRIENDS","updated_time": "2012-05-18T08:25:37+0000"}

M使用此代码。我能够获取除所有者json数组之外的所有值。 我想获取所有者数组的值。 请建议我在哪里出错。

json = new JSONObject(responsedata);
        Log.d(TAG, "name=" + responsedata);
        facebookData = new Events();
        JSONArray data=json.optJSONArray("owner");

        Log.d(TAG, "Data length==" + data.length());
        if (data.length() > 0) {
            for (int i = 0; i < data.length(); i++) {

                JSONObject jsonobj = data.getJSONObject(0);
                Log.d(TAG, "owner Name="+jsonobj.getString("name"));
            }
            }

        facebookData.setEventName(json.getString("name"));
        facebookData.setEventId(json.getString("id"));
        facebookData.setEventStartDate(json.getString("start_time"));
        facebookData.setEventEndDate(json.getString("end_time"));
        facebookData.setPrivacy(json.getString("privacy"));
    facebookData.setUpdatedTime("updated_time");

我无法获取所有者名称和所有者的脸书ID。我的json解析器存在一些问题。

请帮助我。

先谢谢 高拉夫古普塔

3 个答案:

答案 0 :(得分:5)

  {
   "id":"293369****",
   "owner":{
      "name":"******",
      "id":"*****"
   },
   "name":"test event",
   "start_time":"2012-05-18T02:00:00",
   "end_time":"2012-05-18T05:00:00",
   "privacy":"FRIENDS",
   "updated_time":"2012-05-18T08:25:37+0000"
 }

由于{表示JsonObject,[表示JsonArray。

我在上面的字符串中找不到任何JsonArray。 "owner"是JsonObject。

您必须修改代码,请参阅http://www.androidcompetencycenter.com/2009/10/json-parsing-in-android/

答案 1 :(得分:0)

try this one
 try{
        JSONArray jArray = new JSONArray(result);
        JSONObject json_data=null;
           for(int i=0;i<jArray.length();i++)
           {
                json_data =jArray.getJSONObject(i);
                String src_name=json_data.getString("owner");


           }
    }catch(JSONException e){
            Log.e("log_tag", "Error parsing data "+e.toString());
            Toast.makeText(getApplicationContext(), "fail", Toast.LENGTH_SHORT).show();
    }

答案 2 :(得分:0)

如果所有者是JSONArray,它应该如下所示(在[]内)

"owner": [{"name": "******", "id": "*****"}]