Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Gson JsonObject全局变量_Java_Json_Gson - Fatal编程技术网

Java Gson JsonObject全局变量

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

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

为您的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对象,您就必须更改您的模型,而如果您使用列表和映射,则不需要更改模型。