java - 解码 JSON,其中标签是值

标签 java json jackson

我有一个格式如下的 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;
}

它解析得很好,但生成的对象是 map 的 map ,而不是 TeamInfo 的 map 。

result

感觉很近,但同时又很遥远。对尝试的事情有什么想法吗?

最佳答案

认为这应该适合您:

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;
}

关于java - 解码 JSON,其中标签是值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31952710/

相关文章:

java - 如何使用 Jackson 编写嵌套 JSON?

java - @JsonFilter,自定义和性能

java - 加密/解密文件系统中的 Json 文件

java - java中如何在不终止程序的情况下告诉用户输入的XML字符串无效?

java - 通过http GET从Json对象中提取数据

android - Json 解析与 gson 不工作

java - 未找到 Eclipse 部署描述符

java - 使用 Println 显示父类(super class)方法的结果

jquery - 在 Windows 小工具中从 JSON 文件检索数据时出现问题

java - spring.jackson.date-format 属性对于使用 @Temporal 注释的日期序列化无法正常工作