0

我需要从 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"

请问我做错了什么!?

4

1 回答 1

0

如果您正在使用改造:

在改造转换器工厂上使用 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
    }
}
于 2020-05-12T19:26:22.303 回答