0

这是我的有效 JSON 数据

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

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

EDIT:所以我得到了一个 JSONObject pages,我想从中获取 JSONObjects pages,但问题是它们的名字每次都不一样。所以我不能只做 json.getJSONObject("8691");。所以有什么建议我该怎么做?

4

4 回答 4

3

您可以解析当前的 json 字符串以获取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");
于 2013-02-18T05:02:51.850 回答
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

检查这个链接看看这个

于 2013-02-18T05:09:15.737 回答
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"));

由于您的 pageId 是动态的,因此您可以获取 JSONObject 中第一个索引对象的名称

于 2013-02-18T05:10:40.047 回答
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);
        }
    }
}
于 2013-02-18T05:21:49.350 回答