gpt4 book ai didi

java - Gson IllegalStateException 预期为 BEGIN_OBJECT,但当数据类型为 CharSequence 时为 STRING

转载 作者:行者123 更新时间:2023-12-02 01:19:35 32 4
gpt4 key购买 nike

假设我有一个简单的数据类

data class Car(var make: String)

和一个 Json 字符串

val json = "[{'make':'foo'}, {'make':'bar'}]"

当我使用Gson反序列化字符串时

val carList : MutableList<Car> = gson.fromJson(json, Array<Car>::class.java).toMutableList()

它按预期工作。但是当我将 Carmake 的数据类型更改为 CharSequence

data class Car(var make: CharSequence)

还有 GsonBuilder

val builder = GsonBuilder()
builder.registerTypeAdapter(CharSequence::class.java, object : InstanceCreator<CharSequence> {
override fun createInstance(type: Type?): CharSequence {
return String()
}
})
gson = builder.create()

我收到 com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 11 path $[0].make

一直在努力使其与 CharSequence 类型一起工作,任何建议都值得赞赏。

最佳答案

您必须创建适当的JsonDeserializer。不是InstanceCreator。例如:

builder.registerTypeAdapter(CharSequence::class.java, object : JsonDeserializer<CharSequence> {
override fun deserialize(
json: JsonElement?,
typeOfT: Type?,
context: JsonDeserializationContext?
): CharSequence = json?.asString ?: ""
})

关于java - Gson IllegalStateException 预期为 BEGIN_OBJECT,但当数据类型为 CharSequence 时为 STRING,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57950900/

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