Durante a aula surgiu esse erro, que ocorre pq a API estava retornando um array vazio em alguns jogos pesquisados ao invés de um objeto, gerando assim o seguinte erro abaixo:
Exception in thread "main" com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2 path $
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:397)
at com.google.gson.Gson.fromJson(Gson.java:1227)
at com.google.gson.Gson.fromJson(Gson.java:1137)
at com.google.gson.Gson.fromJson(Gson.java:1047)
at com.google.gson.Gson.fromJson(Gson.java:982)
at MainKt.main(Main.kt:28)
at MainKt.main(Main.kt)
Caused by: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2 path $
at com.google.gson.stream.JsonReader.beginObject(JsonReader.java:393)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:386)
... 6 more
Segue abaixo o código de resolução para o erro:
val gson = Gson()
val meuInfoJogo = try {
gson.fromJson(json, InfoJogo::class.java)
} catch (ex: JsonSyntaxException) {
null
}
if (meuInfoJogo != null) {
try {
val meuJogo = Jogo(
meuInfoJogo.info.title,
meuInfoJogo.info.thumb
)
println(meuJogo)
} catch (ex: NullPointerException) {
println("Erro ao processar dados do jogo.")
}
} else {
println("Jogo inexistente! Tente outro código.")
}