gsonの使用
2112 ワード
gsonの使用
SerializendNameの使用
バックグラウンドがJsonに戻るときは、あなたが定義したentityのフィールドと一致しないか、またはJsonに戻るときは、気に入らない名前の使用はSerialized Nameの注釈で私たちのUserエンティティクラスを定義できます。
プログレッシブ時に指定されたフィールドを除外します。
私達はentityでjsonを回転する時、指定されたフィールドを除外する必要があります。@Expose注解の使用方法に基づいて、直接フィールドに@Exposeを追加してExpose注解を加えると、序列化されません。
ポリシーに基づく(一般的)
ポリシーは、Gsonが提供するExclusion Strategyインターフェースを利用するものであり、同様にGson Buiderを使用する必要があり、関連APIの2つは、それぞれaddSerialization Exclusion StrategyとaddDeserialization Exclusion Strategyが、それぞれ序次化と逆序次化についている。ここではプロローグを例にとる。
参照:http://www.jianshu.com/p/e740196225a4
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