Kotlin中Gson解析忽略特定字段问题解析(@Expose,@SerializedName)

引言:
在获取后台数据或者向后台提交请求体的时候,我们需要传递一个bean实体,但这个bean中有我们定义的不想被序列化的字段,怎样把这些特殊字段标记为不序列化的字段呢.从我个人而言,一般常用的三种形式如下.

@Expose字段
Expose有两个属性,serialize和deserialize,顾名思义是序列化和反序列化,如果在Gson解析时不指定,默认都为true.

data class User(@Expose var name: String, 
			   var age: Int, 
			   @Expose var sex: String)
val str = GsonBuilder().excludeFieldsWithoutExposeAnnotation().create().toJson(User("张三", 18, "男"))
println(str)

上述代码序列化出来之后是{“name” : “张三”, “sex” : “男”},没有age属性.相似类推.
自定义解析策略

data class User(var name: String, 
			   var age: Int, 
			   var sex: String)
val str = GsonBuilder().setExclusionStrategies(new ExclusionStrategy() {  
            @Override  
            public boolean shouldSkipField(FieldAttributes f) {  
                return f.getName().equls("age", ignore = true)
            }  
  
            @Override  
            public boolean shouldSkipClass(Class<?> clazz) {  
                //过滤掉 类名包含 Bean的类  
                return clazz.getName().contains("Bean");  
            }  
        }).create().toJson(User("张三", 18, "男"))
        println(str)

序列化出来之后是{“name” : “张三”, “sex” : “男”},也没有age属性.
声明权限过滤 Modifier

data class User(var name: String, 
			   protected var age: Int, 
			   var sex: String)
val str = GsonBuilder().excludeFieldsWithModifiers(Modifier.PROTECTED).create().toJson(User("张三", 18, "男"))
println(str)

同样的,序列化出来之后是{“name” : “张三”, “sex” : “男”},也没有age属性.

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值