Mục đích cơ bản của @SerializedName
chú thích trong Android bằng Gson là gì?
Cho tôi một số ví dụ khác nhau. Tôi không thể hiểu mục đích chính của việc sử dụng nó.
Mục đích cơ bản của @SerializedName
chú thích trong Android bằng Gson là gì?
Cho tôi một số ví dụ khác nhau. Tôi không thể hiểu mục đích chính của việc sử dụng nó.
Câu trả lời:
Ví dụ về lớp Java,
public class Person {
@SerializedName("name")
private String personName;
@SerializedName("bd")
private String birthDate;
}
Lớp này có hai trường đại diện cho tên người và ngày 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 serialising
và deserialising
đối tượng. Ví dụ: trường Java personName được biểu diễn dưới dạng tên trong JSON.
Ví dụ về JSON,
{
"name":"chintan",
"bd":"01-01-1990"
}
Json
rất hữu ích
Đã có một số 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
để Giải mã mã của mình và không sử dụng@SerializedName("name")
trong lớp mô hình của mình, thì GSON của bạn sẽ không hoạt động. Bởi vì do xáo trộn, 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 cú pháp GSON bị hỏng vì GSON sẽ tìm kiếm khóa a
vào json và nó sẽ thất bại.
Bằng cách chỉ định @SerializedName
, GSON sẽ không tìm trong json dựa trên tên biến và sẽ chỉ sử dụng được chỉ định @SerializedName
.
Tất nhiên, bạn có thể yêu cầu proguard không làm xáo trộn mô hình của mình, nhưng nếu bạn muốn mô hình bị xáo trộn, thì bạn phải chỉ định @SerializedName
Bạn có thể hướng dẫn Proguard không làm xáo trộn các lớp dữ liệu của mình bằng cách chỉ định @Keep ở trên cùng của lớp. Điều này sẽ không xóa hoặc làm xáo trộn lớp của bạn. Không cần thêm @SerializedName vào từng trường một cách rõ ràng nếu tên trường tương tự với khóa Json đang được sử dụng cho nó.