0

我正在使用 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"}}
4

2 回答 2

2

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

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

于 2013-04-26T04:43:41.960 回答
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");

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

于 2012-05-08T13:56:06.240 回答