1

这是我的 JSON 数据:

{
  "boards": [
    {
        "board": "3",
        "title": "3DCG",
        "ws_board": 1,
        "per_page": 15,
        "pages": 11
    },
    {
        "board": "a",
        "title": "Anime & Manga",
        "ws_board": 1,
        "per_page": 15,
        "pages": 11
    },
    {
        "board": "adv",
        "title": "Advice",
        "ws_board": 1,
        "per_page": 15,
        "pages": 11
    },
    ...
  ]
}

这是我的反序列化代码:

JSONObject json = readJsonFromUrl("http://api.4chan.org/boards.json");
String jsonBoards = json.toString();
Gson gson = new Gson();
Map<String, Object> map = new HashMap<String,Object>();
map = (Map<String,Object>) gson.fromJson(jsonBoards, map.getClass());

但它并没有完成工作。我需要一种方法来获取板的名称、标题以及每个板的所有信息。当我使用map.get(); 关键是“板”,但我想要每个板和标题等的地图。

4

1 回答 1

2

您需要一个映射 JSON 数据的类结构。您不需要在Map任何地方使用,因为您的 JSON 不代表任何地图!

实际上,它表示一个对象,该对象{...}包含一个名为 的字段,而该字段又表示一个对象"boards"数组...[...]{...}

因此,与您的 JSON匹配的类结构将是这样的(在伪代码中):

class Response
  List<Board> boards

class Board
  String board
  String title
  int ws_board
  int per_page
  int pages

然后,为了将 JSON 解析为您的类结构,您只需执行以下操作:

Gson gson = new Gson();
Response response = gson.fromJson(jsonBoards, Response.class);

因此,您将拥有所有电路板的所有数据:

String nameI = response.getBoards().get(i).getName();
String titleI = response.getBoards().get(i).getTitle();
//and so on...
于 2013-08-07T19:17:40.567 回答