Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

จะกำหนดชื่อสำรองให้กับฟิลด์โดยใช้ Jackson ใน Java ได้อย่างไร?


The @JsonAlias คำอธิบายประกอบสามารถกำหนดชื่อสำรองอย่างน้อยหนึ่งชื่อ สำหรับแอตทริบิวต์ที่ยอมรับระหว่างการดีซีเรียลไลเซชัน ให้ตั้งค่าข้อมูล JSON เป็นวัตถุ Java แต่เมื่อทำให้เป็นอนุกรม เช่น รับ JSON จากอ็อบเจ็กต์ Java จะใช้เฉพาะชื่อคุณสมบัติลอจิคัลจริงแทน นามแฝง .

ไวยากรณ์

@Target(value={ANNOTATION_TYPE,FIELD,METHOD,PARAMETER})@Retention(value=RUNTIME)public @interface JsonAlias 

ตัวอย่าง

<ก่อนหน้า>นำเข้า com.fasterxml.jackson.annotation.*;import com.fasterxml.jackson.core.*;import com.fasterxml.jackson.databind.*;import java.io.*;คลาสสาธารณะ ObjectToJsonTest { โมฆะสาธารณะสาธารณะ main (String[] args) พ่น JsonProcessingException { ObjectMapper mapper =ใหม่ ObjectMapper(); เทคโนโลยีเทคโนโลยี =เทคโนโลยีใหม่ ("Java", "Oracle"); พนักงาน emp =พนักงานใหม่ (110, "ราชา", เทคโนโลยี); สตริง jsonWriter =mapper.writerWithDefaultPrettyPrinter().writeValueAsString(emp); System.out.println (jsonWriter); }}// ระดับเทคโนโลยี คลาสเทคโนโลยี { @JsonProperty("skill") ทักษะสตริงส่วนตัว @JsonProperty("subSkill") @JsonAlias({"sSkill", "mySubSkill"}) ทักษะย่อยของสตริงส่วนตัว; เทคโนโลยีสาธารณะ () {} เทคโนโลยีสาธารณะ (ทักษะสตริง, ทักษะย่อยสตริง) { this.skill =ทักษะ; this.subSkill =ทักษะย่อย; } สตริงสาธารณะ getSkill () { กลับทักษะ; } โมฆะสาธารณะ setSkill (ทักษะสตริง) { this.skill =ทักษะ; } สตริงสาธารณะ getSubSkill () { ส่งคืน subSkill; } โมฆะสาธารณะ setSubSkill (String subSkill) { this.subSkill =subSkill; }}// ระดับพนักงาน class Employee { @JsonProperty("empId") รหัสจำนวนเต็มส่วนตัว; @JsonProperty("empName") @JsonAlias({"ename", "myename"}) ชื่อสตริงส่วนตัว @JsonProperty("empTechnology") เทคโนโลยีเทคโนโลยีส่วนตัว พนักงานสาธารณะ (){} พนักงานสาธารณะ (รหัสจำนวนเต็ม ชื่อสตริง เทคโนโลยีเทคโนโลยี){ this.id =id; this.name =ชื่อ; this.tech =เทค; } จำนวนเต็มสาธารณะ getId () { รหัสส่งคืน; } โมฆะสาธารณะ setId (Integer id) { this.id =id; } สตริงสาธารณะ getName() { ชื่อกลับ; } โมฆะสาธารณะ setName (ชื่อสตริง) { this.name =ชื่อ; } เทคโนโลยีสาธารณะ getTechnology () { คืนเทคโนโลยี; } โมฆะสาธารณะ setTechnology (เทคโนโลยีเทคโนโลยี) { this.tech =tech; }}

ผลลัพธ์

{ "เทคโนโลยี" :{ "skill" :"Java", "subSkill" :"Oracle" }, "empId" :110, "empName" :"ราชา", "empTechnology" :{ "skill " :"Java", "subSkill" :"Oracle" }}