簡體   English   中英

解碼JSON,其中標簽是值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM