วัตถุประสงค์พื้นฐานของ@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 ที่ใช้อยู่