如何使用kotlinx.serialization序列化嵌套类

我需要从Sandwich类获取BreadType属性。我有两个可序列化的案例:

@Serializable
class MyFood {
    var name: String? = null
    var price: Int? = null
    var sand: Sandwich? = null
}

@Serializable
class Sandwich{
    var breadType: String? = null
}

还有这个JSON:

"MyFood": {
    "name": "Sandwich double","price": 100.00,"breadType": 100.00
 }

我收到JsonUnknownKeyException异常:

"Strict JSON encountered unknown key: breadType\nYou can disable strict mode to skip unknown keys"

请问我做错了什么!?

clorchid 回答:如何使用kotlinx.serialization序列化嵌套类

如果您使用的是改造:

在改装转换器工厂上使用JsonConfiguration( strictMode = false)

// your retrofit builder
.addConverterFactory(
    Json(
        JsonConfiguration(strictMode = false)
    ).asConverterFactory(MediaType.get("application/json"))
)

换句话说,您应该使用Json.nonstrict.parse()而不是Json.parse()

或者我们可以传入构造函数:

serializer = KotlinxSerializer(Json.nonstrict)

编辑:

根据您的json,您的类应如下所示:

Serializable
class MyFood {
    var name: String? = null
    var price: Int? = null
    var breadType: double? = null
}

这将起作用,但是如果您想使用Sandwich类,那么您的json应该是这样的:

"MyFood": { 
"name": "Sandwich double","price": 100.00,"sand": {
"breadType":100.00
}
}
本文链接:https://www.f2er.com/2370769.html

大家都在问