[英]decoding JSON where tags are values
我有一個格式如下的JSON文件:
{
"Cubs": {
"city": "Chicago",
"league": "National",
"division": "Central"
},
"Cardinals": {
"city": "St. Louis",
"league": "National",
"division": "Central"
}
}
我想從解析中得到的是Map<String,TeamInfo>
,其中的關鍵是團隊名稱。
我正在嘗試使用傑克遜(Jackson)來解碼-團隊的信息結構定義得很好,但是標簽是團隊的名稱。 我無法控制輸入格式,這就是我們使用的格式。
我試過這樣解析:
public static class TeamInfo {
private String city;
private String league;
private String division;
public TeamInfo() {
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getLeague() {
return league;
}
public void setLeague(String league) {
this.league = league;
}
public String getDivision() {
return division;
}
public void setDivision(String division) {
this.division = division;
}
}
public Map<String, TeamInfo> parseTeamInfo(String inputFile) {
Map<String, TeamInfo> teamInfo = null;
try {
teamInfo = m_objectMapper.readValue(inputFile, Map.class);
} catch (IOException e) {
e.printStackTrace();
}
return teamInfo;
}
它解析得很好,但是生成的對象是Maps Map,而不是TeamInfo Map。
同時感覺很近又很遠。 對嘗試的事情有任何想法嗎?
認為這應該為您工作:
public Map<String, TeamInfo> parseTeamInfo(String inputFile) {
Map<String, TeamInfo> teamInfo = null;
try {
TypeReference<HashMap<String,TeamInfo>> typeRef
= new TypeReference<HashMap<String,TeamInfo>>() {};
HashMap<String,TeamInfo> o = mapper.readValue(inputFile, typeRef);
} catch (IOException e) {
e.printStackTrace();
}
return teamInfo;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.