gpt4 book ai didi

gson - 由于 gson 的 IllegalState 导致的 JsonSyntaxException

转载 作者:行者123 更新时间:2023-12-03 17:48:29 26 4
gpt4 key购买 nike

使用 gson 解析 json 时,我有一个奇怪的行为。我使用这个代码:

private static Container parseContainer(String containerJson) {

try {
//TODO Remove try catch when Bug is done
return containerJson != null ? new Gson().fromJson(containerJson, Container.class)
: null;

} catch (JsonSyntaxException e) {
LOGGER.error("JsonSyntaxException ", e);
LOGGER.error("Json: " + containerJson);

//Sleep 3 minutes and try again.
try {
Thread.sleep(1000L * 60 * 3);
} catch (InterruptedException e1) {
LOGGER.error("Exception", e);
}

LOGGER.error("Try again to parse json: " + containerJson);

Container result = new Gson().fromJson(containerJson, Container.class);

LOGGER.error("Parsing successful on second try.");

return result;
}

}

在我的项目中调用该方法时,通常不会抛出异常。但有时会抛出异常,等待一段时间后,解析工作正常。

我还没有弄清楚什么时候抛出异常,什么时候不抛出。

如何记录日志“第二次尝试解析成功”?

异常(exception)是
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapt erFactory.java:176)
at com.google.gson.Gson.fromJson(Gson.java:803)
at com.google.gson.Gson.fromJson(Gson.java:768)
at com.google.gson.Gson.fromJson(Gson.java:717)
at com.google.gson.Gson.fromJson(Gson.java:689)

最佳答案

您的异常未满。 IllegalStateException 必须在这里发表一些评论。像这样的东西。

com.google.gson.JsonSyntaxException: java.lang.IllegalStateException:
Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2

如果你能以这种格式看到它会更有帮助
因此,无论如何,您的 Container.class() 不是您的 containerJson 的正确类型的错误,请尝试使用这样的代码修复它
Type collectionType = new TypeToken<Collection<Container>>(){}.getType();
Collection<Container> enums = gson.fromJson(containerJson, collectionType);

关于gson - 由于 gson 的 IllegalState 导致的 JsonSyntaxException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27395530/

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