Java 使用Gson从Json反序列化映射
假设您的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
"config": {
"k1": "abc",
"k2": "xyz"
},
规则
- 我不知道我会有多少把钥匙
- 所有值都将是字符串
- 我希望地图可以用钥匙寻址
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"
}
},