我调用了一个 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/