java - 如何修复 'JsonNull cannot be cast to JsonObject'

标签 java json gson

我调用了一个 post API,它会响应特定地址的详细信息,但是返回的某些响应没有数据,因此它们将返回为 null。如何停止代码中的转换错误?

我目前仅获取 Json 对象形式的数据,并且我不知道如何修改我的代码,因此当返回 JsonNull 元素时我可以处理该数据。

JsonElement element = new JsonParser().parse(jsonString);
JsonObject jsonObject = element.getAsJsonObject();
jsonObject = jsonObject.getAsJsonObject("response"); // This is either an object or it is null 

String buildName = jsonObject.get("buildingName").getAsString();
String buildNum = jsonObject.get("premisesNumber").getAsString();
String streetName = jsonObject.get("streetName").getAsString();

我期望返回的是有效地址的地址详细信息或无效地址的任何信息。

产生的错误是这样的: java.lang.ClassCastException:com.google.gson.JsonNull 无法转换为 com.google.gson.JsonObject

最佳答案

在 getAsString() 之前检查 isJsonNull()。如果对象为 Null,则返回 true。

您可以按如下方式重写代码

String buildName= (jsonObject.get("buildingName").isJsonNull ?  null : jsonObject.get("buildingName").getAsString());

关于java - 如何修复 'JsonNull cannot be cast to JsonObject',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57095630/

相关文章:

Java DefaultTableModel 从多个表收集数据

java - J2SE JPA 持久性行为

java - 使用 toString() 方法是一个抽象的例子

javascript - HTML5 游戏的对象存储 - 使用什么?

java - Gson处理多个json根元素

java - 服务器使用 JAX-RS 和 RESTeasy 在单个 URL 中向客户端发送 "ping request"

Android:如何获取不同变量中的JSONArray字符串

json - 如何提示我无法控制的函数类型?

java - 哪个 Java/JSON 库支持将包含注释的 JSON 文件转换为 Java 类?

java - Gson反序列化生成NULL值