我在 Kotlin 中有一个简单的图书和借阅者图书馆的模型,如果图书有借阅者,则在其中签出图书。我使用箭头选项来编码借款人的缺席/存在:
data class Borrower(val name: Name, val maxBooks: MaxBooks)
data class Book(val title: String, val author: String, val borrower: Option<Borrower> = None)
我在将这些对象序列化/反序列化到 Gson 中的 JSON 时遇到问题 - 特别是在一本书Option<Borrower>
中对 JSON的表示:null
[
{
"title": "Book100",
"author": "Author100",
"borrower": {
"name": "Borrower100",
"maxBooks": 100
}
},
{
"title": "Book200",
"author": "Author200",
"borrower": null
}
]
我的反序列化代码:
fun jsonStringToBooks(jsonString: String): List<Book> {
val gson = Gson()
return try {
gson.fromJson(jsonString, object : TypeToken<List<Book>>() {}.type)
} catch (e: Exception) {
emptyList()
}
}
我得到一个空列表。几乎相同的jsonStringToBorrowers
工作正常。
有人可以指出我正确的方向吗?
是否会使用不同的 JSON 库,kotlinx.serialization
或者Klaxon
是一个更好的主意,他们是如何做的null <-> None
?
谢谢!