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


110

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

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


javadoc은 무엇을 말합니까?
소티 리오스 Delimanolis

무슨 말인지 이해할 수 없습니까?
무하마드 알리

그것은이 속성은 JSON 데이터로부터 속한 속성 indentifier 식별
Amrut Bidri

1
이 멋진 explaination를 볼 수 있습니다 futurestud.io/tutorials/...
Abhishek 쿠마

답변:


254

자바 클래스 예,

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"
}

2
@MuhammadAli 당신을 도울 수있어서 기쁩니다. 또한 upvote에 의해 나에게 신용을 제공하고 내 사랑 :) 답변을 받아 들일 수
들은 Chintan Rathod

3
나는 아래로 투표의 목적이 무엇인지 이해할 수 나는 앞으로 내 대답을 향상시킬 수 있도록 음의 유권자, 당신의 의견을 추가하시기 바랍니다 .. :)
들은 Chintan Rathod

4
좋은 대답 .... 요점에 바로 .... 예제 Json가 도움이
되었음

도움이되어 다행입니다. :)
Chintan Rathod

1
정말 도움이! ; 정말 감사합니다 :) @ChintanRathod
이므 란

64

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

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

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


1
Gr8 정보, 나는 proguard에게 모델을 난독 화하지 않도록 지시했습니다. 이제 이것으로 할 수 있습니다. :)
akashPatra

1
이것은 매우 중요합니다. 2 시간을 잃고 모든 곳에 @SerializedName을 추가했습니다.
Abhijit Kurane

2

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.