适用于Android的JSON解析 - 嵌套项目?

时间:2012-01-06 06:07:33

标签: android json parsing nested

我已经使用过这个网站多年了,但从未发布过。我很难过,希望有人可以帮助我。

我使用与Slicekick在此发布的JSON parsing app "no data"?非常相似的代码,但似乎无法弄清楚如何解析此JSON文件。我已经编辑了他的JSON信息,以反映我试图解析的确切格式以节省空间/时间。如何解析“结果”,以便查询“名称”和“类型”?就像他的“相似”和“信息”问题一样,我如何解析下面文件中的“信息”和“结果”?

以下是以我正在使用的格式编辑的JSON文件示例:

{
"head": {
    "title": "Music",
    "status": "200"
},
"Info": [
    {
        "Name": "Mos Def",
        "Type": "music",
        "Results": [
            {
                "Name": "Talib Kweli",
                "Type": "music"
            },
            {
                "Name": "Black Star",
                "Type": "music"
            },
            {
                "Name": "Little Brother",
                "Type": "music"
            }
         ]
    }, 
    {
        "Name": "Mos Def",
        "Type": "Vehicles",
        "Results": [
            {
                "Name": "Chevy",
                "Type": "Car"
            },
            {
                "Name": "Ford",
                "Type": "Car"
            },
            {
                "Name": "Pontiac",
                "Type": "Car"
            }
         ]
      }
   ]
}

我可能感兴趣的部分代码是:

...我做了一个httpget ...它被内置到StringBuilder中 ...使用StringBuilder

的结果创建一个JSONObject
   jArray = new JSONObject(result);

...然后返回

然后到......

   JSONArray  Info = json.optJSONArray("Info");

   System.out.println("HERE IS INFO: ");
   System.out.println(Info);
   //System.out.println("HERE IS RESULTS: ");
   //System.out.println(Results);

基本上这里是我难倒的地方。 我输入了打印消息,试图缩小问题范围。

解析“信息”允许我搜索:“姓名”:“Mos Def”“Type”:“music” - 和 - “Name”:“Mos Def”“Type”:“Vehicles”

用“结果”替换“信息”的搜索不会给我任何数据。 (未找到)

有什么想法吗?

3 个答案:

答案 0 :(得分:4)

这是肯定的,因为Results是JSONArray Info中的JSONArray。所以你应该尝试这样的事情,

JSONArray  Info = json.optJSONArray("Info");
JSONArray Results = null;
for (int i = 0; i < array.length(); i++) {
            JSONObject object = Info.getJSONObject(i);
            Results results = object.getJSONArray("Results");
        }

答案 1 :(得分:1)

您需要调用解析代码,如下所示:

jArray = new JSONObject(result);
for(int i=0;i<jArray.length();i++)
{
    JSONArray  Info = json.optJSONArray("Info");
    for(int j=0;j<Info.length();j++){
    {
         System.out.println("HERE IS INFO: ");
         System.out.println(Info);
         //System.out.println("HERE IS RESULTS: ");
         JSONObject obj=Info.getJSONObject(j);
         JSONArray results=obj.getJSONArray("Results");
         for(int k=0; k<results.length();
         {
             //Process Results
         }
}

答案 2 :(得分:0)

更好地使用GSON,它来自谷歌并使用它解析JSON是小菜一碟.. !! 这是一个很好的教程,使用GSON你会更开心。

Link for GSON tutorial