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

จะทำการดีซีเรียลไลซ์สตริง JSON โดยใช้คำอธิบายประกอบ @JsonCreator ใน Java ได้อย่างไร


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

@JsonProperty - ตัวสร้าง

ตัวอย่าง

<ก่อนหน้า>นำเข้า com.fasterxml.jackson.annotation.*;import java.io.IOException;import com.fasterxml.jackson.databind.*;คลาสสาธารณะ JsonCreatorTest1 { public static void main (String [] args) พ่น IOException { ObjectMapper om =ใหม่ ObjectMapper(); String jsonString ="{\"id\":\"101\", \"fullname\":\"Ravi Chandra\", \"location\":\"Pune\"}"; System.out.println("JSON:" + jsonString); ลูกค้า ลูกค้า =om.readValue (jsonString, Customer.class); System.out.println(ลูกค้า); }}// ชั้นลูกค้า คลาสลูกค้า { รหัสสตริงส่วนตัว; ชื่อสตริงส่วนตัว ที่อยู่สตริงส่วนตัว ลูกค้าสาธารณะ () { } @JsonCreator ลูกค้าสาธารณะ( @JsonProperty("id") รหัสสตริง @JsonProperty("ชื่อเต็ม") ชื่อสตริง @JsonProperty("location") ที่อยู่สตริง) { this.id =id; this.name =ชื่อ; this.address =ที่อยู่; } @Override สตริงสาธารณะ toString () { ส่งคืน "ลูกค้า [id=" + id + ", name=" + ชื่อ + ", address=" + ที่อยู่ + "]"; }}

ผลลัพธ์

JSON:{"id":"101", "fullname":"Ravi Chandra", "location":"Pune"} ลูกค้า [id=101, name=Ravi Chandra, address=Pune] 


@JsonCreator - วิธีการจากโรงงาน

ตัวอย่าง

<ก่อนหน้า>นำเข้า com.fasterxml.jackson.annotation.*;import java.io.IOException;import com.fasterxml.jackson.databind.*;คลาสสาธารณะ JsonCreatorTest2 { public static void main (สตริง[] args) พ่น IOException { ObjectMapper mapper =ใหม่ ObjectMapper(); String jsonString ="{\"id\":\"102\", \"fullname\":\"ราชา Ramesh\", \"location\":\"Hyderabad\"}"; System.out.println("JSON:" + jsonString); ลูกค้า ลูกค้า =ผู้ทำแผนที่readValue (jsonString, Customer.class); System.out.println(ลูกค้า); }}// ชั้นลูกค้า คลาสลูกค้า { รหัสสตริงส่วนตัว; ชื่อสตริงส่วนตัว ที่อยู่สตริงส่วนตัว ลูกค้าสาธารณะ() { } @JsonCreator สาธารณะลูกค้า createCustomer( @JsonProperty("id") รหัสสตริง @JsonProperty("ชื่อเต็ม") ชื่อสตริง @JsonProperty("location") ที่อยู่สตริง) { ลูกค้า ลูกค้า =ลูกค้าใหม่ (); customer.id =id; customer.name =ชื่อ; customer.address =ที่อยู่; ส่งคืนลูกค้า; } @Override สตริงสาธารณะ toString () { ส่งคืน "ลูกค้า [id=" + id + ", name=" + ชื่อ + ", address=" + ที่อยู่ + "]"; }}

ผลลัพธ์

JSON:{"id":"101", "fullname":"ราชา Ramesh", "location":"ไฮเดอราบาด"} ลูกค้า [id=102, name=ราชา Ramesh, address=Hyderabad]