带有Gson映射字段的复杂Json对象到Java对象

带有Gson映射字段的复杂Json对象到Java对象,java,json,gson,Java,Json,Gson,我有一个Json结构,如下所示: { "Pojo" : { "properties" : { "key0" : "value0", "key1" : "value1" } } } 我希望我的最终结果如下所示: public class Pojo { public Map<String, String> properties; } public class Pojo { public P

我有一个Json结构,如下所示:

{
   "Pojo" : {
       "properties" : {
          "key0" : "value0",
          "key1" : "value1"
       }
   }
}
我希望我的最终结果如下所示:

public class Pojo {
     public Map<String, String> properties;
}
public class Pojo {
   public Properties properties;
}

public class Properties {
  public String key0;
  public String key1;
}
现在,我要做的就是解析Json:

new Gson().fromJson(result, Pojo.class)
关于我需要做什么才能正确设置的想法?我无法更改Json返回对象的结构。

请尝试以下操作:

JSONObject obj1=new JSONObject(jsonString);
JSONObject obj2=obj1.getJSONObject("Pojo");
JSONObject obj3=obj2.getJSONObject("properties");
String key1=obj3.getString("key0");
String key2=obj3.getString("key1");
有关更多参考信息,请尝试以下链接:


Gson试图将JSON字段名与POJO字段匹配,因此您在上面看到的JSON暗示顶级对象有一个名为“POJO”的字段。事实上,它表明了以下的类结构

class Container {
    MyObject Pojo;
}

class MyObject {
    Map<String, String> properties;
}
然后将映射为
container.Pojo.properties

如果您不想拥有额外的容器类,那么可以先解析到Json树,然后再额外解析您感兴趣的部分--


然后,您的地图位于
pojo.properties
中,这就是我认为您想要的。为了清晰起见,我已经停止了错误检查,但您可能需要添加一些。

感谢您帮助我了解Gson在这里的工作。这是我第一次尝试使用解析器。
Container container = gson.fromJson(result, Container.class);
JsonElement json = new JsonParser().parse(result);
// Note "Pojo" below is the name of the field in the JSON, the name 
// of the class is not important
JsonElement pojoElement = json.getAsJsonObject().get("Pojo");
Pojo pojo = gson.fromJson(pojoElement, Pojo.class);