例如我有三个班级。
第一个
现在当我这样做的时候:
println(Gson().toJson(Teenager()))
我希望它输出此内容,请注意,将打印所有字段,但在覆盖的情况下,子字段处于主导地位,否则将假定父字段的值为默认值
{
firstname: Chris
lastname: Smith
hasPersonalComputer: true
hasSmartPhone: true
}
但是,上述程序会崩溃,并显示以下消息:
java.lang.IllegalArgumentException: class Teenager declares multiple JSON fields named firstname
理想情况下,我希望不用为所有的类编写样板文件就能实现这一点。如果这可以通过某种反射来完成,那就太好了。我并不真正关心性能,因为这将每天运行一次,输出将缓存在数据库中。
2条答案
按热度按时间nqwrtyyt1#
我偶然发现了
Klaxon
库,这正是我所需要的。jslywgbw2#
你能详细说明一下你是怎么做到的吗?当我使用Klaxon时,它只给我在直接类中声明的成员,而从不给我超类字段。我追溯到这一行:
JsonValue
类型中的obj::class.declaredMemberProperties
,它不包括超类成员属性。obj::class.memberProperties
将。