Expose類
packagecom.google.gson.annotations;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD})
public @interface Expose {
boolean serialize() default true;
boolean deserialize() default true;
}
其中很多人誤解Expose認為是不反序列化酣藻,其實真正意思是區(qū)別Gson在解析對面類中需要序列化標(biāo)志蛮瞄,其它沒有被標(biāo)記的 成員屬性將不會被Gson所解析翻譯(序列化于反序列化育谬,看上面代碼就懂了,默認都是true)
SerializedName類
package com.google.gson.annotations;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD})
public @interface SerializedName {
String value();
}
這貨就是翻譯 成員屬性,讓Gson解析對應(yīng)字段名字囱桨,做映射
EG:
public class TapJoyBean implements Serializable {
@Expose
@SerializedName("Cost")
public String Cost;
@Expose
@SerializedName("isFree")
public String isFree;
@Expose
@SerializedName("Amount")
public String Amount;
public String balcony;
public transient int x
}
其中balcony就不會被Gson所認識做序列化,既是在balcony上加@SerializedName("balcony") 也無法使用 transient 這個字段不是Gson的嗅绰,但它能告訴Gson不要把它序列化成Json