Java 使用Gson进行JSON反序列化
这是我的JSON数据:Java 使用Gson进行JSON反序列化,java,json,map,gson,Java,Json,Map,Gson,这是我的JSON数据: { "boards": [ { "board": "3", "title": "3DCG", "ws_board": 1, "per_page": 15, "pages": 11 }, { "board": "a", "title": "Anime & Manga", "ws_board": 1,
{
"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());
JSONObject json=readJsonFromUrl(“http://api.4chan.org/boards.json");
字符串jsonBoards=json.toString();
Gson Gson=新的Gson();
Map Map=newhashmap();
map=(map)gson.fromJson(jsonBoards,map.getClass());
但这并不能完成任务。我需要一种方法来获得董事会的名称、头衔以及每个董事会的所有信息。当我使用
map.get()时;关键是“boards”,但我需要每个board和title的映射等等。您需要一个映射JSON数据的类结构。您不需要在任何地方使用映射
,因为您的JSON不表示任何映射
事实上,它表示一个对象{…}
,该对象包含一个名为“boards”
的字段,该字段反过来表示对象{…}
的数组[…]
因此,与JSON匹配的类结构如下(在伪代码中):
因此,您可以将所有板的所有数据输入:
String nameI = response.getBoards().get(i).getName();
String titleI = response.getBoards().get(i).getTitle();
//and so on...
行Map Map=newhashmap()
是不必要的,因为您正在创建一个从未使用过的HashMap
对象。您应该将其更改为Map代码>或Map=null
或将最后两行合并为Map Map=(Map)gson.fromJson(…)
。似乎您应该调用get(“boards”)
来获取JSONObject
s的JSONArray
,然后遍历该数组以获取所需的任何数据,并将其放入所需的任何数据结构中。你有什么具体问题?问题是我不知道怎么做。我正在阅读Json和Gson javadocs,但仍然无法理解。我试图使用JSONArray,但出现了一个错误。我尝试了这个json2=(JsonArray)map.get(“boards”);
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...