Android gson解析@SerializedName、transient、@Expose

目录

@SerializedName和transient

 @Expose


@SerializedName和transient

@SerializedName
自定义序列化与反序列化过程中json数据的的key
transient
加这个关键字表示这个字段 不会参与任何的序列化与反序列化

看代码

该商品类,name字段加上@SerializedName("goodsName")注解,表示将json数据的key显示为goodsName

color这个字段加transient关键字,表示color这个字段不管是序列化还是反序列化都不被解析

package com.example.myjson;

import com.google.gson.Gson;

import org.junit.Test;

public class Test2 {

    @Test
    public void testSpecial(){
        Goods2 goods = new Goods2("apple",15.2,8,"green");
        String json = new Gson().toJson(goods);
        System.out.println("序列化:"+json);
        System.out.println("反序列化:"+new Gson().fromJson(json,Goods2.class));
        //color这个字段没有被解析出来
        System.out.println("反序列化:"+new Gson().fromJson("{\"goodsName\":\"melon\",\"price\":12,\"count\":6,\"color\":\"red\"}",Goods2.class));


    }


}

结果

 @Expose

1 创建gson对象时,用new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create()创建,让 @Expose 注解生效

2 加@Expose注解,默认表示serialize = true,deserialize = true,即这个字段序列化和反序列化都参与
3 加@Expose注解,通过更改serialize和deserialize的值true /false,控制该字段是否序列化、反序列化
4 不加@Expose注解,默认表示serialize = false,deserialize = false,即这个字段序列化和反序列化都不参与

price这个字段 不参与序列化,参与反序列化
count这个字段 序列化和反序列化都不参与
package com.example.myjson;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

import org.junit.Test;

public class Test3 {

    @Test
    public void testSpecial(){
        Goods3 goods = new Goods3("apple",15.2,8,"green");
        //序列化
        //解析 @Expose注解
        Gson gsonExpose = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
        String json = gsonExpose.toJson(goods);
        System.out.println("序列化:"+json);
        System.out.println("反序列化:"+gsonExpose.fromJson(json,Goods3.class));
        System.out.println("反序列化:"+gsonExpose.fromJson("{\"name\":\"berry\",\"price\":3.00,\"count\":3\",\"color\":\"yellow\"}",Goods3.class));

    }


}

结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值