วัตถุประสงค์พื้นฐานของ@SerializedName
คำอธิบายประกอบใน Android โดยใช้ Gson คืออะไร?
ขอยกตัวอย่างที่แตกต่างกัน ฉันไม่เข้าใจจุดประสงค์หลักของการใช้งาน
วัตถุประสงค์พื้นฐานของ@SerializedName
คำอธิบายประกอบใน Android โดยใช้ Gson คืออะไร?
ขอยกตัวอย่างที่แตกต่างกัน ฉันไม่เข้าใจจุดประสงค์หลักของการใช้งาน
คำตอบ:
ตัวอย่างคลาส Java
public class Person {
@SerializedName("name")
private String personName;
@SerializedName("bd")
private String birthDate;
}
คลาสนี้มีสองฟิลด์ที่แสดงถึงชื่อบุคคลและวันเกิดของบุคคล เขตข้อมูลเหล่านี้จะมีคำอธิบายประกอบกับ@SerializedNameคำอธิบายประกอบ พารามิเตอร์ (ค่า) ของคำอธิบายประกอบนี้คือชื่อที่จะใช้เมื่อserialising
และdeserialising
วัตถุ ตัวอย่างเช่นpersonNameฟิลด์ Java จะแสดงเป็นชื่อใน JSON
ตัวอย่าง JSON
{
"name":"chintan",
"bd":"01-01-1990"
}
Json
ประโยชน์
มีคำตอบอยู่สองสามคำที่นี่ แต่ฉันอยากจะเพิ่มว่าถ้าคุณใช้ProGuard
เพื่อทำให้โค้ด@SerializedName("name")
สับสนและไม่ได้ใช้ในคลาสโมเดลของคุณ GSON ของคุณจะไม่ทำงาน เนื่องจากความสับสนชื่อตัวแปรของคุณอาจเปลี่ยนจากString name
เป็นString a
ส่งผลให้การแยกวิเคราะห์ GSON เสียเนื่องจาก GSON จะมองหาคีย์a
ใน json และจะล้มเหลว
โดยการระบุ@SerializedName
, GSON จะไม่มองใน JSON @SerializedName
ตามชื่อตัวแปรและจะใช้เพียงระบุ
แน่นอนว่าคุณสามารถบอกให้ proguard ไม่ทำให้โมเดลของคุณสับสน แต่ถ้าคุณต้องการให้โมเดลมีความสับสนคุณต้องระบุ @SerializedName
คุณสามารถสั่งให้ Proguard ไม่ทำให้คลาสข้อมูลของคุณสับสนได้โดยระบุ @Keep ไว้ที่ด้านบนของคลาส สิ่งนี้จะไม่ลบหรือทำให้ชั้นเรียนของคุณสับสน ไม่จำเป็นต้องเพิ่ม @SerializedName ในแต่ละฟิลด์อย่างชัดเจนหากชื่อฟิลด์นั้นคล้ายกับคีย์ Json ที่ใช้อยู่