@ SerializedName Androidのアノテーションの基本的な目的は何ですかGsonを使用して
いくつか例を挙げてください。私はそれを使用する主な目的を理解できません。
Javaクラスの例、
public class Person {
@SerializedName("name")
private String personName;
@SerializedName("bd")
private String birthDate;
}
このクラスには、人の名前と生年月日を表す2つのフィールドがあります。これらのフィールドには@ SerializedName注釈が付けられています。この注釈のパラメーター(値)は、serialising
およびdeserialising
オブジェクトのときに使用される名前です。たとえば、JavaフィールドpersonNameはJSONではnameとして表されます。
JSONの例、
{
"name":"chintan",
"bd":"01-01-1990"
}
ここにはすでにいくつかの答えがありますが、ProGuard
を使用してコードを難読化し、モデルクラスで@SerializedName("name")
を使用しない場合、GSONは機能しません。難読化により、変数名がString name
からString a
に変更され、GSONがキーa
をjsonで検索するため、GSON解析が破損する可能性があるため、失敗します。
@SerializedName
を指定すると、GSONは変数名に基づいてjsonを検索せず、指定された@SerializedName
のみを使用します。
もちろん、モデルを難読化しないようにproguardに指示できますが、モデルを難読化する場合は、@SerializedName
を指定する必要があります
クラスの上に@Keepを指定することにより、データクラスを難読化しないようにProguardに指示できます。これにより、クラスの削除も難読化も行われません。フィールド名が使用されているJsonキーに類似している場合、@ SerializedNameを各フィールドに明示的に追加する必要はありません。