我有一个包含一段数据和相关异常的对象。PublicclassMyBean{PrivateStringdata;PrivateExceptionproblem;...}当我尝试GSON.toJSON(object)时,它给我一个循环引用错误,提示“问题”字段。有没有办法让GSON处理这样的对象? 最佳答案 当尝试按照原始问题中的描述序列化数据结构时,Gson确实提示循环引用错误。下面的例子证明了这一点。importcom.google.gson.Gson;publicclassGsonFoo{publicstaticvoidmain(
假设我有以下自定义对象列表:ArrayList其中GroupItem是一些具有int的类和String变量。到目前为止我试过了Gson库,但这并不是我想要的。ArrayListgroupsList=/*...*/Gsongson=newGson();JsonElementelement=gson.toJsonTree(groupsList,newTypeToken>(){}.getType());JsonArrayjsonArray=element.getAsJsonArray();我的目标是获得JSONArray(org.Json.JSONArray)以某种方式。有什么想法吗?[编辑
我正在编写一个类,它将连接到服务器并基于一些参数,检索一个json字符串,该字符串将使用GSON解析为指定的(通过泛型)类。主管类(class)的精简版如下所示:classExecutor{privateResponseresponse;publicvoidexecute(){TyperesponseType=newTypeToken>(){}.getType();this.response=newGson().fromJson(json,responseType);}publicResponsegetResponse(){returnthis.response;}}(JSON变量lo
我有一个Java对象,我想将它输出为JSON字符串。但是我想避免打印出Java对象中的属性。我知道我可以使用GsonBuilder的excludeFieldsWithoutExposeAnnotation()方法来做到这一点。但是,我想我会尝试另一种方法,即在打印出来之前从JsonObject中删除该属性。以下代码有效:Gsongson=newGsonBuilder().setDateFormat("yyyy-MM-dd''HH:mm:ss").create();StringjavaObjectString=gson.toJson(javaObject);//javaObjectStr
我正在使用相当多的不可变集合,我很好奇如何使用Gson反序列化它们。由于没有人回答并且我自己找到了解决方案,我正在简化问题并提出我自己的答案。我有两个问题:如何写单Deserializer为所有人工作ImmutableList?如何为所有人注册ImmutableList? 最佳答案 更新:有https://github.com/acebaggins/gson-serializers其中涵盖了许多Guava系列:ImmutableListImmutableSetImmutableSortedSetImmutableMapImmutab
GSON是否直接访问类的私有(private)成员而不调用它的getter方法来获取值?遵循的Java规则是,如果classB有私有(private)成员,不能访问classA没有getter/setter方法。现在我正在使用GSON开发一个项目,我感觉getter/setter方法被绕过[未使用,并且直接访问私有(private)成员]我只是一名学生,所以我可能会错过一些日常工作。A类:publicclassA{publicstaticvoidmain(String[]args){Bb=newB();Gsongson=newGsonBuilder().setPrettyPrintin
我的json中有整数,我不希望gson将它们转换为double。以下不起作用:@TestpublicvoidkeepsIntsAsIs(){Stringjson="[{\"id\":1,\"quantity\":2,\"name\":\"apple\"},{\"id\":3,\"quantity\":4,\"name\":\"orange\"}]";GsonBuildergsonBuilder=newGsonBuilder();gsonBuilder.registerTypeAdapter(Double.class,newDoubleSerializerAsInt());Gsongso
我最近将我们的一些序列化从Jackson切换到了Gson。发现Jackson将日期序列化为longs。但是,Gson默认将Dates序列化为字符串。如何在使用Gson时将日期序列化为长整数?谢谢。 最佳答案 第一种适配器执行反序列化,第二种适配器执行序列化。Gsongson=newGsonBuilder().registerTypeAdapter(Date.class,(JsonDeserializer)(json,typeOfT,context)->newDate(json.getAsJsonPrimitive().getAsLo
(这篇文章是canonicalquestion,下面提供了示例答案。)我正在尝试使用Gson#fromJson(String,Class)将一些JSON内容反序列化为自定义POJO类型.这段代码importcom.google.gson.Gson;publicclassSample{publicstaticvoidmain(String[]args){Stringjson="{\"nestedPojo\":[{\"name\":null,\"value\":42}]}";Gsongson=newGson();gson.fromJson(json,Pojo.class);}}classP
我正在使用GSON反序列化一些JSON。JSON是:{"employee_id":297,"surname":"Maynard","givenname":"Ron","lastlogin":"",...Employee对象有一个日期字段laSTLogin:publicclassEmployee{privateIntegeremployee_id;privateStringsurname;privateStringgivenname;privateDatelastlogin;我遇到的问题是,当laSTLogin值未填充时,它是JSON中的空字符串,因此GSON解析器抛出:java.tex