gson使用

现在开发中服务端向客户端传送数据一般采用的是json数据,google官方的gson对于android开发来说再平常不过了,今天学习下其简单的使用(下载地址)。

先看下其简单的使用,首先定义一个简单JAVA类People(略)

 

Gson gson = new Gson() ;
People people = new People(1, "张三", "mldn", "110") ;
String jsonStr = gson.toJson(people) ;
System.out.println(jsonStr);

People p2 = gson.fromJson(jsonStr, People.class) ;
System.out.println(p2.name);

看下输出:

 

1.简单使用

JsonElement,其是一个抽象类,有两个有用的子类JsonObjectJsonArray。

 

JsonObject jsonPeople = new JsonObject() ;
jsonPeople.addProperty("id", 2);
jsonPeople.addProperty("name", "李四");
jsonPeople.addProperty("tel", "119");
jsonPeople.addProperty("address", "中国郑州");
System.out.println(jsonPeople);

看下输出结果,是不是很简单?

JsonArray array = new JsonArray() ;
for(int i = 0 ; i < 3 ; ++ i) {
JsonObject object = new JsonObject() ;
object.addProperty("id", i);
object.addProperty("name", "test" + i);
object.addProperty("tel", "test tel" + i);
object.addProperty("address", "test address" + i);
array.add(object);
}
System.out.println(array);
JsonObject allPeople = new JsonObject() ;
allPeople.add("allPeople", array);
System.out.println(allPeople);


根据json数组将其转为为list数组:

List<People> peopleList = gson.fromJson(array, new TypeToken<List<People>>() {}.getType()) ;
System.out.println(peopleList.size() + "\n" + peopleList.get(1).address);

2.过滤下不需要的字段

这部分基本上用不到,先了解吧

 

Ⅰ: 在对象中把字段用@Expose 注解,这样其他没有用此注解的字段通通都会过滤掉,当然还有一步关键的要实现,就是我们在实例化 Gson 的时候不能简单的new Gson() 了,而是需要用到 
 

new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create() ; 

Ⅱ: 直接用 构造方法

 mGson = new GsonBuilder().setExclusionStrategies(new ExclusionStrategy() {
            @Override
            public boolean shouldSkipField(FieldAttributes f) {
                //过滤掉字段名包含"id","address"的字段
                 return  f.getName().contains( "id" )|f.getName().contains( "address" );
            }

            @Override 
            public boolean shouldSkipClass (Class<?> clazz) {
                //过滤掉 类名包含 Bean的类
                return clazz.getName().contains("Bean");
            }
        }).create();

Ⅲ:通过指定声明的权限来过滤,这里过滤掉声明为 protcted 的变量;

mGson = new GsonBuilder().excludeFieldsWithModifiers(Modifier.PROTECTED).create() ;

以上方法是 Gson 中使用到的,掌握了这几个基本上 Gson 的打包和解析 过滤字段问题就不是什么问题了;

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值