Gson JsonObject全局变量

时间:2012-05-08 13:44:08

标签: java json gson

我正在使用Gson API并创建了一个类:

public class Person
{
   private String name;
   private JsonObject someInfo;

   public Person()
   {
   }
}

当我使用:

实现此类的实例时
Person person = new Person();
person.name = "Charles"
person.someInfo = new JsonObject();
person.someInfo.addProperty("key1","value1");
Gson gson = new Gson();
String jsonStr = gson.toJson(person);

我在会员属性中获取信息:

{"members":{"name":"Charles","someInfo":{"key1":"value1"}}}

我注意到如果我将Person的类someInfo全局变量声明为JsonElement而不是JsonObject,则信息会正确显示。

有没有办法使用JsonObject实现信息?

我的期望是:

{"name":"Charles","someInfo":{"key1":"value1"}}

2 个答案:

答案 0 :(得分:2)

使用Gson 2.2.2我遇到了同样的问题。

当我升级到Gson 2.2.3时,我在序列化JsonObject时得到了预期的JSON。

答案 1 :(得分:0)

为someInfo使用地图:

public class Person
{
   private String name;
   private Map<Object, Object> someInfo;

   public Person()
   {
   }

}

Person person = new Person();
person.name = "Charles";
person.someInfo = new HashMap<Object, Object>();
person.someInfo.put("key1","value1");

尽管使用适当的getter / setter访问Person变量会更好。