例如,我有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
理想情况下,我想在不为我的所有类编写模板的情况下实现这一点。如果能用某种反射来实现,那就更好了。我并不担心性能问题,因为它每天都会运行一次,而且输出会被缓存在数据库中。
我偶然发现 Klaxon
库,而这正是我所需要的。