从JSON对象中提取数组

时间:2013-04-29 10:08:11

标签: java json java-ee

我有以下JSON对象,我需要将 web 数组中的路径字符串解析为新的JSON数组。

"taxonomy": {
    "source": {
        "master": {
            "_id": "5000",
            "path": "/Appliances/Refrigerators/French Door Bottom Freezers"
        },
        "web": [
            {
                "_id": "6686",
                "path": "/Appliances/Refrigerators/French Door Bottom Freezers"
            },
            {
                "_id": "7686",
                "path": "/Appliances/Refrigerators/Bottom Freezers"
            }
        ],

    },

},

我已经写过,但我不确定如何在 web 数组中获取所有路径

                JSONObject jsonTaxonomy= _blob.optJSONObject("taxonomy");
            if(jsonTaxonomy!=null)
            {
                if(!jsonTaxonomy.isNull("source"))
                {
                    JSONObject jsonTaxonomySource= jsonTaxonomy.optJSONObject("source");
                    if(!jsonTaxonomySource.isNull("web"))
                    {
                        JSONArray jsonTaxonomySourceWeb= jsonTaxonomySource.optJSONArray("web");
                        if(jsonTaxonomySourceWeb!=null && jsonTaxonomySourceWeb.length()>0)
                        {
                            //Got inside the array
                        }
                    }
                }
            } 

4 个答案:

答案 0 :(得分:1)

在没有为您提供完整答案的情况下,我确信您可以通过调试此方法并在最内层if()停止它来找到答案。您将能够了解jsonTaxonomySearsWeb所包含的内容,从而了解如何获取其值。

答案 1 :(得分:0)

将您的代码修改为以下内容: -

JSONObject jsonTaxonomy= _blob.optJSONObject("taxonomy");
if(jsonTaxonomy!=null)
{
        JSONObject jsonTaxonomySource = jsonTaxonomy.optJSONObject("source");
        if(jsonTaxonomySource!=null)
        {
            JSONArray jsonTaxonomySearsWeb= jsonTaxonomySource.optJSONArray("web");
            if(jsonTaxonomySearsWeb!=null)
            {
                // Traverse through your JSONArray and get each Object & extract path from it.
            }
        }
}

答案 2 :(得分:0)

我对这个问题有点不清楚。但是根据我的理解,你想要解析JSON,如果你想在java中这样做,那么你可以使用谷歌的GSON jar ...你也可以在这里查看简单的例子Gson handle object or array

答案 3 :(得分:0)

试试这个......

      groups = json.getJSONArray(TAG_GROUP);
      System.out.println("Result Success+++"+groups);
      for (int i = 0; i < groups.length(); i++) {
      JSONObject c = groups.getJSONObject(i);
      String source = c.getString(TAG_SOURCE);
      System.out.println("Checking ::"+source);
      String lname = c.getString(TAG_PATH);
      HashMap<String, String> map = new HashMap<String, String>();
      map.put(TAG_SOURCE, source);
      map.put(TAG_PATH,path);
      weblist.add(map);       //weblist is your arraylist for both values
      webpathlist.add(path);   //webpathlist is your arraylist for path
       }
      List<String> newList = new ArrayList<String>();
      newList.addAll(weblist);