Android如何从有效的JSON数据中获取`pageid`和`title``ns`键?

时间:2013-02-18 04:57:54

标签: android json

这是我的有效JSON数据

   {
    "query": {
       "pages": {
          "8691": {
             "pageid": 8691,
             "ns": 0,
             "title": "d"
           }
       }
    }
}

这是我的数据,如何获得pageidtitle值。

EDIT:所以我得到一个JSONObject pages,我想从pages获取JSONObjects,但问题是他们的名字每次都不同。所以我不能只做json .getJSONObject( “8691”);.那么任何建议我该怎么做?

4 个答案:

答案 0 :(得分:3)

你可以解析当前的json String以获取pageidtitle

 JSONObject json =new JSONObject("json string");

//get query json object
JSONObject jsonquery =json.getJSONObject("query");

//get pages json object
JSONObject jsonpages =jsonquery.getJSONObject("pages");

//get names for jsonpages
JSONArray namejsonarray = jsonpages.names();

// now get json object from jsonpages
JSONObject jsonnew =jsonpages.getJSONObject(namejsonarray.get(0));

//get pageid from jsonnew json object
String str_pageid =jsonnew.getString("pageid");

//get title from jsonnew json object
String str_title =jsonnew.getString("title");

答案 1 :(得分:2)

jsonString="  {
    "query": {
       "pages": {
          "8691": {
             "pageid": 8691,
             "ns": 0,
             "title": "d"
           }
       }
    }
}";

JSONObject json = new JSONObject(jsonString);

JSONObject json_query = json.getJSONObject("query");
JSONObject json_pages = json_query.getJSONObject("pages");
JSONArray pagesjsonarray = json_pages.names();
JSONObject jsonobject =json_pages.getJSONObject(pagesjsonarray.get(0));

 jsonobject .get("pageid");// it will return 8691
 jsonobject .get("title");// it will return d

点击此链接see this

答案 2 :(得分:2)

你可以尝试这样的事情:

        JSONObject mainJson = new JSONObject("{\"query\": {\"pages\": {\"8691\": {\"pageid\": 8691,\"ns\": 0,\"title\": \"d\"}}}}");
        JSONObject jsonOnb = mainJson.getJSONObject("query").getJSONObject("pages") ;
        JSONObject pagesObj = jsonOnb.getJSONObject(jsonOnb.names().getString(0));
        System.out.println("pageid : " + pagesObj.get("pageid"));
        System.out.println("title : " + pagesObj.get("title"));

由于您的页面ID是动态的,您可以在JSONObject中获取第一个索引对象的名称

答案 3 :(得分:2)

假设您已JSONObject名为pages

final JSONObject pages = ...;
final JSONArray names = pages.names();

if (names != null && names.length() > 0) {
    for (int i = 0; i < names.length(); i++) {
        final String name = names.getString(i);
        final JSONObject page = pages.optJSONObject(name);

        if (page != null) {
            final String id = page.getString("pageid");
            final String ns = page.getString("ns");
            final String title = page.getString("title");

            System.out.println("Id " + id);
            System.out.println("ns " + ns);
            System.out.println("title " + title);
        }
    }
}