Gson.toJson() 在子字段占主导地位的情况下,坚持父字段和子字段。

问题描述 投票:1回答:2

例如,我有3个班级

class Grandad {
var lastname : String = "Smith"
var firstName : String = "John"
} 
class Dad : Grandad() {
override firstname: String = "Jack"
var hasPersonalComputer = true
}
class Teenager : Dad() {
override var firstname : String = "Chris"
override var hasPersonalComputer = false
var hasSmartPhone = true
}

现在当我做这样的事情时,我希望它能输出这样的结果。

println(Gson().toJson(Teenager()))

我希望它能输出这样的结果,注意所有的字段都会被打印出来,但在被覆盖的情况下,子字段是主要的,否则就假定父字段的值是默认的。

{
firstname: Chris
lastname: Smith
hasPersonalComputer: true
hasSmartPhone: true
}

然而,上面的崩溃与以下消息。

java.lang.IllegalArgumentException: class Teenager declares multiple JSON fields named firstname

理想情况下,我想在不为我的所有类编写模板的情况下实现这一点。如果能用某种反射来实现,那就更好了。我并不担心性能问题,因为它每天都会运行一次,而且输出会被缓存在数据库中。

json parsing kotlin gson
2个回答
0
投票

我偶然发现 Klaxon 库,而这正是我所需要的。

© www.soinside.com 2019 - 2024. All rights reserved.