起因:
关于Gson对于Kotlin默认值不支持的问题
关于Gson对于Kotlin默认值不支持的问题

一开始我以为gson是通过调用对应参数的构造,没有对应到默认值是因为kt的data class默认没有生成重载方法,后来自己试了一下发现加不加注解都无法取到默认值。
关于Gson对于Kotlin默认值不支持的问题

关于Gson对于Kotlin默认值不支持的问题
断点看了看源码才发现原因:
关于Gson对于Kotlin默认值不支持的问题
因为gson是直接调用默认构造,然后通过反射设置属性值的。
而kotlin的默认值并不是直接设置在属性上的,而是在差异个数的构造方法上
关于Gson对于Kotlin默认值不支持的问题
所以导致了默认值无效。

解决方法:
如图1中所示,使用Moshi是没问题的,我只测试了注解的方法是没问题的,原因是因为注解会生成对应的adapter,内部使用的是参数对应的构造,而不是默认无参构造,所以默认值就生效了。
关于Gson对于Kotlin默认值不支持的问题
Moshi比gson的优势就在于对于Kotlin更好的支持上,gson毕竟是针对java的,对于kotlin的某些特性就显得无能为力了

相关文章:

  • 2021-09-21
  • 2022-12-23
  • 2022-12-23
  • 2021-10-18
  • 2021-10-18
  • 2021-05-30
  • 2022-12-23
  • 2021-08-14
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2023-03-20
  • 2021-07-09
  • 2022-12-23
  • 2021-06-01
相关资源
相似解决方案