gson.toJson()持久保存父字段和子字段,其中子字段占主导地位

q1qsirdb  于 2022-11-06  发布在  其他
关注(0)|答案(2)|浏览(172)

例如我有三个班级。
第一个
现在当我这样做的时候:

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

我希望它输出此内容,请注意,将打印所有字段,但在覆盖的情况下,子字段处于主导地位,否则将假定父字段的值为默认值

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

但是,上述程序会崩溃,并显示以下消息:

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

理想情况下,我希望不用为所有的类编写样板文件就能实现这一点。如果这可以通过某种反射来完成,那就太好了。我并不真正关心性能,因为这将每天运行一次,输出将缓存在数据库中。

nqwrtyyt

nqwrtyyt1#

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

jslywgbw

jslywgbw2#

你能详细说明一下你是怎么做到的吗?当我使用Klaxon时,它只给我在直接类中声明的成员,而从不给我超类字段。我追溯到这一行:
JsonValue类型中的obj::class.declaredMemberProperties,它不包括超类成员属性。obj::class.memberProperties将。

相关问题