Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Gson从Json反序列化映射_Java_Json_Gson - Fatal编程技术网

Java 使用Gson从Json反序列化映射

Java 使用Gson从Json反序列化映射,java,json,gson,Java,Json,Gson,假设您的Json由一组自由形式的对组成 "config": { "k1": "abc", "k2": "xyz" }, 规则 我不知道我会有多少把钥匙 所有值都将是字符串 我希望地图可以用钥匙寻址 其中一些值是字符串,其他值是数字。我在想HashMap public class Outer { private Config config = new Config(); public Config getConfig() { return

假设您的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(){
返回配置;
}
公共无效设置配置(配置配置){
this.config=config;
}
公共类配置{
私有映射映射=新的HashMap();
公共地图getMap(){
返回图;
}
公共无效集合映射(映射映射){
this.map=map;
}
}
}
当使用此测试时,我看到
getConfig()
返回一个非空值。但是当我到达
getMap()
时,我得到了
null

请帮助我理解我在这里遗漏了什么。

您应该只使用:

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
的字段的对象,该字段表示一个
map
。。。但是字段
config
表示自己是一个
映射

漂亮!谢谢你的回答和解释!
"config": {
    "map": {
        "k1": "abc",
        "k2": "xyz"
    }
},