2

假设您的 Json 由一堆自由形式对组成

"config": {
    "k1": "abc",
    "k2": "xyz"
},

规则

  • 我不知道我会有多少把钥匙
  • 所有值都是字符串
  • 我希望地图可以通过键寻址

其中一些值是字符串,而另一些是数字。我在想HashMap

public class Outer {

    private Config config = new Config();

    public Config getConfig() {
        return config;
    }

    public void setConfig(Config config) {
        this.config = config;
    }


    public class Config {
        private Map<String, String> map = new HashMap<>();

        public Map<String, String> getMap() {
            return map;
        }

        public void setMap(Map<String, String> map) {
            this.map = map;
        }
    }
}

使用测试时,我看到它getConfig()返回一个非空值。但是当我到达时,getMap()我得到null

请帮助我了解我在这里缺少什么。

4

1 回答 1

3

你应该只使用:

public class Outer {

    private Map<String, String> config = new HashMap<>();

    public Map<String, String> getConfig() {
        return config;
    }
    public void setConfig(Map<String, String> config) {
        this.config = config;
    }
}

在您编写的类模型中,您正在描述这样的 JSON:

"config": {
    "map": {
        "k1": "abc",
        "k2": "xyz"
    }
},

但正如你所看到的,这不是你想要的......

您必须意识到configJSON 中的字段不是一个对象,它包含一个名为的字段,该字段map表示 a Map... 但该字段config 表示自己 aMap

于 2013-07-05T15:47:50.327 回答