0

我正在尝试将下面的 json 字符串转换为 java 对象,但我得到的是空对象。在 prop2 对象下,可以有任意数量的键值对(其中键是字符串,值是数组)

{
"Level1": {
        "prop1": "",
        "prop2": {
            "one": [{
                "ip": "1.2.3.4",
                "port": "100"
            }],
            "ten": [{
                "ip": "10.20.20.10",
                "port": "200"
            }]
        }
}
}

我有这个类结构,但是我将 ipAndPorts 映射为空。

    @JsonIgnoreProperties(ignoreUnknown = true)
    static class Root {
        @JsonProperty("Level1")
        private Level1 level1;
    }
    @JsonIgnoreProperties(ignoreUnknown = true)
    static class Level1 {
        @JsonProperty("prop2")
        private Prop2 prop2;
    }

    @JsonIgnoreProperties(ignoreUnknown = true)
    static class Prop2 {
        private Map<String, List<IpAndPort>> ipAndPorts = Collections.emptyMap();
    }
    @JsonIgnoreProperties(ignoreUnknown = true)
     static class IpAndPort {
        @JsonProperty("port")
        private String port;
    }

我的 java 类应该如何正确表示“prop2”?

4

2 回答 2

0

备案:问题已通过使用解决

@JsonIgnoreProperties(ignoreUnknown = true)
static class Level1 {
    @JsonProperty("prop2")
    private Map<String, List<IpAndPort>> ipAndPorts = Collections.emptyMap();
}

直接不Prop2上课。否则 Jackson 会期望在 JSON 对象ipAndPorts下调用一个 JSON 属性prop2

于 2018-03-05T13:51:53.140 回答
0

我建议您首先按照希望的方式创建 Java 类,然后使用 Jackson 将其序列化为 JSON。您将看到生成的 JSON 的结构是什么,并查看是否需要以及如何修改您的类。

于 2018-03-05T13:59:15.537 回答