首页 > 解决方案 > 为什么 Gson @Expose 注释不能正常工作?

问题描述

我有一个模型类,由 gson 填充服务器响应。gson转换器工厂是:

Retrofit.Builder().addConverterFactory(GsonConverterFactory.create())

我的模型中有一个瞬态字段,以防止 gson 进行序列化/反序列化。

data class Testy( 
     val id:Int = 1,
     @Transient var isShowing:Boolean = true
):Serializable

在获得服务器响应并获得转换后的 gson 对象后,isShowing字段的值是false我预期的true(作为初始值)。

解决方法

我使用了以下方法,但没有得到想要的行为:

  1. 使用@Expose(serialize = false, deserialize = false)而不是 @Transient
  2. 正如这里提到的添加GsonBuilder.excludeFieldsWithModifiers(Modifier.TRANSIENT)

标签: androidkotlingson

解决方案


推荐阅读