在JSON对象中解析JSON对象

时间:2012-12-22 11:47:28

标签: java android json

我有一个JSON文件,其中包含一个项目对象数组:

{
  "item": [
    {
      "title": "TitleA",
      "link": "http://www.abc.html?partner=rss&emc=rss",
      "guid": {
        "-isPermaLink": "true",
        "#text": "www.abc.html"
      },
      "atom:link": {
        "-rel": "standout",
        "-href": "http://www.abc.html?partner=rss&emc=rss"
      },
      "media:content": {
        "-url": "standard.jpg",
        "-medium": "image",
        "-height": "75",
        "-width": "75"
      },
      "media:description": "This is the description.",
      "media:credit": "Reuters",
      "description": "In depth description",
      "dc:creator": "By test creator",
      "pubDate": "Sun, 21 Oct 2012 11:29:12 GMT",
      "category": "World"

    },
    {
      "title": "TitleB",
      "link": "http://www.abc.html?partner=rss&emc=rss",
      "guid": {
        "-isPermaLink": "true",
        "#text": "www.abc.html"
      },
      "atom:link": {
        "-rel": "standout",
        "-href": "http://www.abc.html?partner=rss&emc=rss"
      },
      "media:content": {
        "-url": "standard.jpg",
        "-medium": "image",
        "-height": "75",
        "-width": "75"
      },
      "media:description": "This is the description.",
      "media:credit": "Reuters",
      "description": "In depth description",
      "dc:creator": "By test creator",
      "pubDate": "Sun, 21 Oct 2012 11:29:12 GMT",
      "category": "World"

    }
    ]
}

现在我知道如何获得“标题”,但我不知道如何访问“media:content”中的“-url”,因为它似乎是Item对象中的JSON对象。我如何获得此值并将其分配给我的Item类中的值?

3 个答案:

答案 0 :(得分:2)

尝试从当前json字符串"-url"中获取"media:content"

JSONObject jsonObject = new JSONObject("Your JSON STRING HERE");

JSONArray  jsonArray =jsonObject.getJSONArray("item");

 for (int i = 0; i < jsonArray.length(); i++) {
    JSONObject jsonObjectitem=
                           jsonArray.getJSONObject(i);                                                                            

  // get title or link here
     String strtitle=jsonObjectitem.getString("title");
      //....get other values in same way 

   // get media:content json object
  JSONObject jsonObjectmediacontent = 
                       jsonObjectitem.getJSONObject("media:content");

   // get url,medium,...

     String strurl=jsonObjectmediacontent.getString("-url"); 
     //....get other values in same way                                   
 }

答案 1 :(得分:2)

编写下面的代码来解析-url字符串,它将解决您的问题。

JSONObject mMainJsonObj = new JSONObject("Pass Json Response String Here");
JSONArray  mItemJsonArray = mMainJsonObj.getJSONArray("item");

for (int i = 0; i < mItemJsonArray.length(); i++) {
    JSONObject mJsonObj1 = mItemJsonArray.getJSONObject(i);
    String mTitle = mJsonObj1.getString("title");
    String mLink = mJsonObj1.getString("link");

    JSONObject mJsonObjGuid = mJsonObj1.getJSONObject("guid");
    String mIsPermLink = mJsonObjGuid.getString("-isPermaLink");
    String mText = mJsonObjGuid.getString("#text");

    JSONObject mJsonObjAtomLink = mJsonObj1.getJSONObject("atom:link");
    String mRel = mJsonObjAtomLink.getString("-rel");
    String mHref = mJsonObjAtomLink.getString("-href");

    JSONObject mJsonObjMediaContent = mJsonObj1.getJSONObject("media:content");
    String mUrl = mJsonObjMediaContent.getString("-url");
    String mMedium = mJsonObjMediaContent.getString("-medium");
    String mHeight = mJsonObjMediaContent.getString("-height");
    String mWidth = mJsonObjMediaContent.getString("-width");
}

请参阅以下链接以获取更多信息。

Json Parsing Example

答案 2 :(得分:0)

杰克逊的解决方案:使用JsonNode将您的JSON读入ObjectMapper并检索您的值,如下所示:

// Since JsonNode implements Iterable of itself and cycles through array elements,
// this works
for (final JsonNode element: node)
    doSomethingWith(element.get("media:content").get("-url"));