2017年7月7日 见Gson 的@Expose 注解 和 @SerializedName 注解 查阅资料后 记录:
@Expost注解的作用:区分实体中不想被序列化的属性,包含俩个属性-deserialize(反序列化) 和 serialize(序列化) 默认true
使用new GsonBuilder().excludeFiedlsWithoutExpostAnnotaion().create();创建Gson对象,没有@Wxpose注释的属性讲不会被序列化.
@SerializedName 注解的作用:定义属性序列化后的名称;
下面是代码案例:
采用Gson studio 需添加依赖: (最好为版本较新的)
compile 'com.google.code.gson:gson:2.6.2'
package ....;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
import java.io.Serializable;
/**
* Created by john on 2017/7/7.
*/
public class User implements Serializable {
private Long id;
@Expose
private int age;
@Expose
@SerializedName("username")
private String name;
public User(Long id, int age, String name){
this.id = id;
this.age = age;
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
}package com.example.dyf.dyfdemo.gson;
import android.app.Activity;
import android.os.Bundle;
import android.support.annotation.Nullable;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
/**
* Created by john on 2017/7/7.
*/
public class GsonActivity extends Activity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//
testGson();
}
private void testGson(){
//gson的@Expose注解和@SerializedName注解
User user = new User(1L, 17, "Jion");
//使用 new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
//创建Gson对象,没有@Expose注释的属性将不会被序列化
Gson g1 = new Gson();
//使用 new Gson();
System.out.println(g1.toJson(user));// {"age":17,"id":1,"username":"Jion"}
//使用 new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
Gson g2 = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
System.out.println(g2.toJson(user)); // {"age":17,"username":"Jion"}
}
}
热门评论
-
三少爷的鞋2019-07-11 0
查看全部评论过滤某个字算用个注解呢?