2015-03-10 22 views
45

bất cứ ai có thể cho tôi biết mục đích cơ bản của @SerializedName chú thích trong Android bằng GSONmục đích cơ bản của @SerializedName chú thích trong Android bằng GSon

Hãy cho tôi một số ví dụ khác là những gì là gì. Tôi đã kiểm tra trong trang web khác nhau nhưng tôi không thể hiểu mục đích chính của việc sử dụng nó là gì.

+0

nào javadoc nói gì? –

+0

tôi không thể hiểu được những gì đang nói? –

+0

nó sẽ xác định thụt lề thuộc tính mà thuộc tính này thuộc về dữ liệu json –

Trả lời

123

Java lớp Ví dụ,

public class Person { 

    @SerializedName("name") 
    private String personName; 

    @SerializedName("bd") 
    private String birthDate; 

} 

Lớp này có hai lĩnh vực mà đại diện cho tên người và ngày tháng năm sinh của một người. Các trường này được chú thích bằng chú thích @SerializedName. Tham số (giá trị) của chú thích này là tên được sử dụng khi các đối tượng serialisingdeserialising. Ví dụ: trường Java personName được thể hiện là tên bằng JSON.

JSON Ví dụ,

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

cảm ơn bạn rất nhiều vì đã tiết kiệm thời gian của tôi –

+1

@MuhammadAli niềm vui của tôi để giúp bạn. Bạn cũng có thể cho tôi tín dụng bằng cách upvote và chấp nhận câu trả lời thân yêu của tôi :) –

+2

cử tri tiêu cực, xin vui lòng thêm bình luận của bạn để tôi có thể hiểu mục đích của bỏ phiếu là gì và tôi có thể cải thiện câu trả lời của tôi trở về .. :) –

4

Đã có vài câu trả lời ở đây, nhưng tôi muốn nói thêm rằng nếu bạn đang sử dụng ProGuard để xáo trộn mã của bạn & không sử dụng @SerializedName("name") trong lớp mô hình của bạn, sau đó bạn GSON sẽ không hoạt động. Bởi vì obfuscation, tên biến của bạn có thể đã thay đổi từ String name thành String a dẫn đến phân tích GSON bị hỏng vì GSON sẽ tìm kiếm khóa a vào json & nó sẽ không thành công.

Bằng cách chỉ định @SerializedName, GSON sẽ không tìm trong json dựa trên tên biến & sẽ chỉ sử dụng được chỉ định @SerializedName.

Đương nhiên bạn có thể nói Proguard để không xáo trộn mô hình của bạn, nhưng nếu bạn muốn có mô hình rối loạn, sau đó bạn phải xác định @SerializedName

Các vấn đề liên quan