gpt4 book ai didi

java.lang.UnsupportedOperationException : JsonObject - Not sure why

转载 作者:行者123 更新时间:2023-12-01 18:00:12 29 4
gpt4 key购买 nike

我有以下代码:


JsonElement deviceConfig = null;

JsonObject status = getRestAPI().Connectivity().getDeviceStatus(device);

deviceConfig = status.get("deviceConfig");

if (deviceConfig == null || deviceConfig.isJsonNull()) {
deviceConfig = status.get("mConfig");
}

if (deviceConfig != null && !deviceConfig.isJsonNull()) {
if (!deviceConfig.getAsString().isEmpty()) {
break;
}
}

由于某些原因,我收到以下错误:

java.lang.UnsupportedOperationException: JsonObject at com.google.gson.JsonElement.getAsString(JsonElement.java:191)

在这一行中:

if (!deviceConfig.getAsString().isEmpty()) {

知道为什么我收到此异常,尽管我检查了 JSON 不为空吗?

最佳答案

JsonElement 源代码:https://github.com/google/gson/blob/master/gson/src/main/java/com/google/gson/JsonElement.java

JsonElement 类是一个抽象类,它旨在通过提供进一步实现的子类来使用,但抽象类不够具体。

getAsString 方法确实存在,但实现方式如下:

  /**
* convenience method to get this element as a string value.
*
* @return get this element as a string value.
* @throws ClassCastException if the element is of not a {@link JsonPrimitive} and is not a valid
* string value.
* @throws IllegalStateException if the element is of the type {@link JsonArray} but contains
* more than a single element.
*/
public String getAsString() {
throw new UnsupportedOperationException(getClass().getSimpleName());
}

这基本上意味着:您应该在子类中提供实现。

因此,为了获得您想要的结果,您需要在调用 getAsString() 之前将变量强制转换为子类。

关于java.lang.UnsupportedOperationException : JsonObject - Not sure why,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60649821/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com