[java] Gson을 사용하는 Android에서 @SerializedName 주석의 기본 목적은 무엇입니까?
@SerializedName
Gson을 사용하는 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 name
에 String a
GSON 키를 찾습니다 깨진 GSON 구문 분석에 결과 a
JSON에 &가 실패합니다.
지정 @SerializedName
하면 GSON은 변수 이름을 기반으로 json을 찾지 않고 지정된 사용합니다 @SerializedName
.
물론 proguard에게 모델을 난독 화하지 않도록 지시 할 수 있지만, 모델을 난독 화하려면 다음을 지정해야합니다. @SerializedName
답변
클래스 맨 위에 @Keep을 지정하여 데이터 클래스를 난독 화하지 않도록 Proguard에 지시 할 수 있습니다. 이것은 클래스를 제거하거나 난독 화하지 않습니다. 필드 이름이 사용중인 Json 키와 유사한 경우 @SerializedName을 각 필드에 명시 적으로 추가 할 필요가 없습니다.