gsonの使用

2112 ワード

gsonの使用
SerializendNameの使用
バックグラウンドがJsonに戻るときは、あなたが定義したentityのフィールドと一致しないか、またはJsonに戻るときは、気に入らない名前の使用はSerialized Nameの注釈で私たちのUserエンティティクラスを定義できます。
public class User {
    //    
    public String name;
    public int age;
    public String emailAddress;
}
楽屋帰りのJson
{"name":"  kidou","age":24,"email_address":"[email protected]"}
私たちが期待しているのとは違って、実体類は以下のように修正できます。
public class User {
    //    
    public String name;
    public int age;
    @SerializedName("email_address")
    public String emailAddress;
}
SerializendNameはまた、String配列を受け入れる別の属性を提供します。
@SerializedName(value = "emailAddress", alternate = {"email", "email_address"})
public String emailAddress;
もし戻ってきたjsonには、任意のemail Addresが含まれています。email、email。addressフィールドは正確に解析されます。
プログレッシブ時に指定されたフィールドを除外します。
私達はentityでjsonを回転する時、指定されたフィールドを除外する必要があります。@Expose注解の使用方法に基づいて、直接フィールドに@Exposeを追加してExpose注解を加えると、序列化されません。
public class User {
    public String name;
    @Expose
    public int age;
    @Expose
    public String emailAddress;
}
Gsonを使う時も簡単なnew Gsonだけではいけません。
Gson gson = new GsonBuilder()
        .excludeFieldsWithoutExposeAnnotation()
        .create();
        gson.toJson(user);
このようにUserのnameフィールドを除外します。
ポリシーに基づく(一般的)
ポリシーは、Gsonが提供するExclusion Strategyインターフェースを利用するものであり、同様にGson Buiderを使用する必要があり、関連APIの2つは、それぞれaddSerialization Exclusion StrategyとaddDeserialization Exclusion Strategyが、それぞれ序次化と逆序次化についている。ここではプロローグを例にとる。
Gson gson = new GsonBuilder().addSerializationExclusionStrategy(new ExclusionStrategy() {

			@Override
			public boolean shouldSkipField(FieldAttributes f) {
				 //return true     
				 if ("name".equals(f.getName())) return true; //      
				 return false;
			}

			@Override
			public boolean shouldSkipClass(Class> clazz) {
				//return true    
				return false;
			}
		}).create();
nameフィールドも除外できます。
参照:http://www.jianshu.com/p/e740196225a4