[英]Gson deserialize into map
我有這個json字符串,我需要將其反序列化為map:Map
"players_test": [
{
"54231f85f8e049c7bd8ac0aba3d1caf7": {
"uuid": "54231f85f8e049c7bd8ac0aba3d1caf7",
"name": "TomShar",
"signup_time": "2014-07-04 16:27:16"
}
},
{
"54231f85f8e049c7bd8ac0aba3d1caf7": {
"uuid": "54231f85f8e049c7bd8ac0aba3d1caf7",
"name": "TomShar",
"signup_time": "2014-07-04 16:27:16"
}
},
{
"54231f85f8e049c7bd8ac0aba3d1caf7": {
"uuid": "54231f85f8e049c7bd8ac0aba3d1caf7",
"name": "TomShar",
"signup_time": "2014-07-04 16:27:16"
}
}
]
所以字符串應該是鍵,然后值應該是它所代表的對象。 我有一個為UUID對象編寫的自定義deseriaziler,並且經過測試和工作(這不是問題)。
編輯:
我找到了一個更好的JSON結構,我可以使用它來解決我想要的問題。
"players": {
"54231f85-f8e0-49c7-bd8a-c0aba3d1caf7": {
"uuid": "54231f85-f8e0-49c7-bd8a-c0aba3d1caf7",
"name": "TomShar",
"kills": 0,
"assists": 0,
"damage_dealt": 0,
"time_alive": 0,
"dead": false
},
"KEY": {
"uuid": "KEY",
"name": "Name",
"kills": 0,
"assists": 0,
"damage_dealt": 0,
"time_alive": 0,
"dead": false
},
"KEY": {
"uuid": "KEY",
"name": "Name",
"kills": 0,
"assists": 0,
"damage_dealt": 0,
"time_alive": 0,
"dead": false
}
}
首先,將JSON字符串括在{...}
,然后您可以輕松地將其轉換為Map,如下所示:
class PlayerObject {
private String uuid;
private String name;
private String signup_time;
// getters & setters
}
Gson gson = new Gson();
Type type = new TypeToken<Map<String, ArrayList<Map<String, PlayerObject>>>>(){}.getType();
Map<String, ArrayList<Map<String, PlayerObject>>> map = gson.fromJson(jsonString, type);
是否可以使地圖像:
Map<String, PlayerObject>
玩家?
是的,您可以將其轉換為所需的格式,如下所示:
Map<String,PlayerObject> players=new HashMap<String,PlayerObject>();
for(Map<String, PlayerObject> m:map.get("players_test")){
for(String key:m.keySet()){
players.put(key, m.get(key));
}
}
System.out.println(new GsonBuilder().setPrettyPrinting().create().toJson(players));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.