为什么我的数据类给出空值,除非我在其上应用默认值?

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

我试图使用kotlin的数据类来显示来自服务器的数据。它几乎正常工作但有些情况下,每当我获取响应时,我不知道为什么它仍然给出空值,除非我为msg添加默认值("")。

  1. 这是我的数据类 data class ViewcardModel( val msg: String = "", // here is default values val cartcnt: String = "", val order_total: Int = 0, val status: Boolean = false )
  2. 这是我对服务器的回应 { status = false // server response }
android kotlin stack-overflow kotlin-extension data-class
2个回答
0
投票

您可能正在使用类似GSON的东西来实例化模型的实例。这些工具使用反射来创建实例,因此主构造函数的默认参数值永远不会生效(因为它永远不会被调用)。

您需要的是与此问题相关的内容:

Setting Default value to a variable when deserializing using gson

自定义反序列化器可能就是您最终的结果。


0
投票

您应该将值传递给这样的数据类

  val s= ViewcardModel(status=false)
  println(s.toString())
  val s1= ViewcardModel(msg="hello",status=false)
  println(s1.toString())

产量

ViewcardModel(msg=, cartcnt=, order_total=0, status=false)
ViewcardModel(msg=hello, cartcnt=, order_total=0, status=false)
© www.soinside.com 2019 - 2024. All rights reserved.