[java] Gson을 사용하는 Android에서 @SerializedName 주석의 기본 목적은 무엇입니까?

@SerializedNameGson을 사용하는 Android에서 주석 의 기본 목적은 무엇입니까 ?

몇 가지 다른 예를 들어주세요. 나는 그것을 사용하는 주요 목적을 이해할 수 없습니다.



답변

자바 클래스 예,

public class Person {

    @SerializedName("name")
    private String personName;

    @SerializedName("bd")
    private String birthDate;

}

이 클래스에는 개인의 이름과 생년월일을 나타내는 두 개의 필드가 있습니다. 이러한 필드는 @SerializedName 주석으로 주석 처리됩니다. 이 어노테이션의 매개 변수 (값)는 오브젝트 serialising및 시기에 사용할 이름 deserialising입니다. 예를 들어 Java 필드 personName 은 JSON에서 이름 으로 표시됩니다 .

JSON 예,

{
    "name":"chintan",
    "bd":"01-01-1990"
}


답변

여기에는 이미 답변이 거의 없지만 ProGuard코드를 난독 화 하는 데 사용 @SerializedName("name")하고 모델 클래스에서 사용하지 않으면 GSON이 작동 하지 않는다고 추가하고 싶습니다 . 난독 때문에, 당신의 변수 이름에서 변경되었을 수 있기 때문에 String nameString aGSON 키를 찾습니다 깨진 GSON 구문 분석에 결과 aJSON에 &가 실패합니다.

지정 @SerializedName하면 GSON은 변수 이름을 기반으로 json을 찾지 않고 지정된 사용합니다 @SerializedName.

물론 proguard에게 모델을 난독 화하지 않도록 지시 할 수 있지만, 모델을 난독 화하려면 다음을 지정해야합니다. @SerializedName


답변

클래스 맨 위에 @Keep을 지정하여 데이터 클래스를 난독 화하지 않도록 Proguard에 지시 할 수 있습니다. 이것은 클래스를 제거하거나 난독 화하지 않습니다. 필드 이름이 사용중인 Json 키와 유사한 경우 @SerializedName을 각 필드에 명시 적으로 추가 할 필요가 없습니다.


답변