草庐IT

java - 如何检查 Gson JsonObject 中的 "isEmpty()"?

我使用GoogleGsonAPI构建JSON。当我初始化一个JsonObject时:JsonObjectjson=newJsonObject();并打印出来,它实际上是{}。我试图排除“空”JSON,即未添加任何属性的{}。但是我在GsonAPI中找不到类似isEmpty()的方法。如何使用GsonAPI找出“空”JSON? 最佳答案 您可以使用JsonObject#entrySet()获取JSON对象的名称/值对集(其成员)。这将返回一个Set,它具有您正在寻找的传统isEmpty()方法。例如,JsonObjectjsonObj

java - Gson:日期上的 JsonSyntaxException

我正在尝试使用Gson反序列化一个json数组,但目前我收到了一个JsonSyntaxException。json字符串是由.NETMVC3Web服务使用JsonResult创建的(意思是,我不是手动创建json,它是由我知道可以在其他几个平台上工作的库创建的)。这是json:[{"PostID":1,"StudentID":39,"StudentName":"JoeBlow","Text":"Testmessage.","CreateDate":"\/Date(1350178408267)\/","ModDate":"\/Date(1350178408267)\/","Comment

java - 使用 Gson 抛出异常反序列化多态 JSON

我正在开发一个使用Gson作为JSON反序列化器并需要从RESTAPI反序列化多态JSON的应用程序。在解释mi问题之前请注意,我已经在研究Gson的多态反序列化,并已在多个案例中成功实现。所以这是我遇到的一个具体问题。我也读过thisgreatpost和thisStackOverflowdiscussion在问这个之前。我正在使用RuntimeTypeAdapterFactory顺便反序列化多态对象。问题我遇到的问题显然是GSON的RuntimeTypeAdapterFactory不允许声明在层次结构中指定对象类型的字段。我将用一些代码进一步解释。我有以下pojos结构(为简单起见减

java - 如何从自定义 Gson JsonSerializer 调用另一个序列化程序?

我有我的自定义类User:classUser{publicStringname;publicintid;publicAddressaddress;publicTimestampcreated;}我现在正在为User.class创建自定义JsonSerializer:@OverridepublicJsonElementserialize(Usersrc,TypetypeOfSrc,JsonSerializationContextcontext){JsonObjectobj=newJsonObject();obj.addProperty("name",src.name);obj.addPr

java - Gson如何获取序列化名称

当我们定义一个具有以下格式的类时publicclassField{@SerializedName("name")publicStringname;@SerializedName("category")publicStringcategory;}对于JsonObject内容{"name":"string","category":"string",}并使用Gson解析内容Fieldfield=newGsonBuilder().create().fromJson(content,Field.class);所以,我的问题是我们可以使用Gson来获取@Serialized名称吗?因为在这种情况下

java - 使用 Gson 将 JSON 字符串解析为 Dictionary<String, Integer>

我有一个JSON字符串,如下所示:{"altruism":1,"amazon":6}我想要的是一个HashMap之后有两个条目。Key:altruismValue:1Key:amazonValue:6我真的不知道该怎么做。通常有从JSON字符串解析的对象,但这里不是这种情况。 最佳答案 Gson使您尝试做的事情相对容易。以下是一个工作示例。//input:{"altruism":1,"amazon":6}StringjsonInput="{\"altruism\":1,\"amazon\":6}";Mapmap=newGson().

java - 使用 GSon 从 JSon 转换为多个未知的 java 对象类型

我有一个netty解码器,它使用GSon将来自Web客户端的JSON转换为适当的Java对象。要求是:客户端可能会发送不相关的类、A类、B类、C类等,但我想在管道中使用相同单例解码器实例进行转换(因为我使用spring来配置它)。我面临的问题是我需要事先知道class对象。publicObjectdecode(){gson.fromJson(jsonString,A.class);}这无法解码B或C。我的库的用户现在需要为每个类编写单独的解码器,而不是稍后进行强制转换。我能看到这样做的唯一方法是从Web客户端的JSON字符串中传递类的字符串名称说“org.example.C”,在解码器

java - Gson自动添加classname

假设我有以下类(class):publicclassDog{publicStringname="Edvard";}publicclassAnimal{publicDogmadDog=newDog();}如果我通过Gson运行它,它将按如下方式序列化:GSongson=newGSon();Stringjson=gson.toJson(newAnimal())result:{"madDog":{"name":"Edvard"}}到目前为止一切顺利,但我想使用Gson自动为所有类添加类名,所以我得到以下结果:{"madDog":{"name":"Edvard","className":"Do

java - 如何使用 Gson 动态处理 json 响应数组/对象

我面临一个问题,有时Json响应返回一个对象数组,有时返回对象本身,我们如何在响应类中动态处理。在当前eg:results有时会得到一个对象数组"\"results\":"+"[{"+有时对象本身"\"results\":"+"{"+例如:我们该如何处理?Gsongson=newGson();SearchResponseresponse=newSearchResponse();response=gson.fromJson("{"+"\"completed_in\":0.047,"+"\"max_id\":291771567376039936,"+"\"max_id_str\":\"29

java - 使用 Gson 的自定义 JSON 反序列化器

我在使用Gson解析JSON响应时遇到问题。JSON字符串:response:[2,{owner_id:23972237,album_id:25487692,title:'albumnotnew'},{owner_id:23972237,album_id:25486631,title:'фыв'}]我有这两个类:publicclassVkAudioAlbumsResponse{publicArrayListresponse;publicVkErrorerror;}publicclassVkAudioAlbum{publicintowner_id;publicintalbum_id;pu