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 データをマップするクラス構造が必要です。MapJSON はマップを表さないため、どこでも使用する必要はありません。

実際、これ{...}は というフィールドを含むオブジェクトを表し、これはオブジェクト"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 に答える