android json解析 - 如何根据列表视图中的标记获取值

时间:2012-07-16 15:48:47

标签: android json parsing

以下是我从api获得的json数据

{
     "list": {
        "items": [
            "About Us",
            "Services",
            "Working With",
            "Officehours",
            "Useful Links",
            "Terms & Conditions",
            "Go to Website"
        ]
    },
    "data": 
    {
        "about us": {  "description": " Aaaaaaaa"   },
        "services": {  "description": " Baaaaaaa."  },
        "working with": { "description": "Caaaaaa"  },
        "officehours": {   "title": "Office Hours:","timing": "09:00am - 06:00pm"},
        "useful links": {  "description": [ 
                 {
                    "name": "One",
                    "link": "http://www.google.com/"
                },
                {
                    "name": "Two",
                    "link": "http://www.yahoo.com"
                }]},
        "terms & conditions": { "description": "Daaaaaaaaa" },
        "go to website": { "link": "http: //www.amazon.com/"  },
    }
}

在上面的json数据中,json数组中的“list”值将显示在listview中。我已将它们添加到数组列表中,并在列表视图中显示。

现在,当用户单击列表视图时,与其对应的数据将显示在下一个活动中。例如,如果用户点击About US text of listview,那么我将如何在下一个活动中显示description Aaaaaaa

对于列表视图中的每个项目,我必须打开不同的活动。 如果内部代码为description,则必须打开activity1 如果内部代码为title,则必须打开activity2 如果内部代码为link,则必须打开activity3 如果内部标记description是JSON数组类型,则必须打开activity4

我不应该在代码中对代码中的"about us", "services","working with","officehours","useful links","terms & conditions", "go to website"等代码进行热编码。

在我的OnItemClickListener中,我正在执行以下操作

try
  {
     JSONObject locarray = new JSONObject(Appconstant.dataObj.get(0).toString());        
     String txt_data = locarray.getJSONObject(about.get(arg2).toLowerCase()).getString("description");
  }
  catch(Exception e)
  {
      Log.e("Exception @ json 1",""+e);
  }

在某些情况下我得到一个例外,说没有“描述”的JSOn值

如何做到这一点,请帮助我

1 个答案:

答案 0 :(得分:0)

这样做的一种方法是

JSONObject jobj = new JSONObject(content); // the content you have above
JSONObject data = jobj.getJSONObject("data");
JSONObject aboutUs = data.getJSONObject("about us");
String desc = aboutUs.getString("description:);

不确定这是否有帮助:)如果有描述为空白的情况使用

aboutUs.optString("description");