Java Gson JsonObject全局变量
我使用Gson API创建了一个类,如:Java Gson JsonObject全局变量,java,json,gson,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.so
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"}}
为您的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=新人();
person.name=“查尔斯”;
person.someInfo=newhashmap();
person.someInfo.put(“键1”、“值1”);
尽管最好使用适当的getter/setter来访问
Person
变量。我在使用Gson 2.2.2时遇到了同样的问题
当我升级到Gson 2.2.3时,当我序列化JsonObject时,我得到了预期的JSON。您的代码无法工作。不能将字符串分配给JsonObject!同时向我们展示您的期望。我们不知道它是什么信息显示正确。对不起,我写了这个代码在这里匆忙。。。已经编辑过了这是我以前用过的。。。我真正想做的是使用Gson的classes@RedEagle为什么要用JSonObject/JsonElement/JSonArray等替换它。。。?这些是低级对象,除非您正在编写TypeAdapter,否则不应该对其进行操作。如果您事先不知道元素的结构,那么使用Map是正确的方法。我开始认为您是对的,因为虽然GSON非常强大,但它的基类缺乏Map和List(作为JsonArray的替代品)@RedEagle提供的一些功能,如果您从“Model”的角度考虑,您希望模型独立于序列化机制。如果明天您发现XML比JSON好(我不是说它好!),那么如果您使用JSON对象,您就必须更改您的模型,而如果您使用列表和映射,则不需要更改模型。