Saya menggunakan jackson untuk mengubah objek saya menjadi json. Objek memiliki 2 bidang:
@Entity
public class City {
@id
Long id;
String name;
public String getName() { return name; }
public void setName(String name){ this.name = name; }
public Long getId() { return id; }
public void setName(Long id){ this.id = id; }
}
Karena saya ingin menggunakan ini dengan fitur lengkap otomatis jQuery, saya ingin 'id' muncul sebagai 'nilai' di json dan 'nama' muncul sebagai 'label'. Dokumentasi jackson tidak jelas mengenai hal ini dan saya sudah mencoba setiap anotasi yang bahkan tampak seperti itu memang melakukan apa yang saya butuhkan tetapi saya tidak bisa name
tampil seperti label
dan id
tampil seperti value
di json.
Adakah yang tahu bagaimana melakukan ini atau jika ini memungkinkan?
Jawaban:
Sudahkah Anda mencoba menggunakan @JsonProperty?
sumber
@JsonProperty(value="label")
dan tidak berhasil, saya sudah mencobanya seperti yang Anda sarankan dan berhasil! Terima kasih pria ini akan sangat membantu menyederhanakan kode sekarang.Sadarilah bahwa ada
org.codehaus.jackson.annotate.JsonProperty
di Jackson 1.x dancom.fasterxml.jackson.annotation.JsonProperty
Jackson 2.x. Periksa ObjectMapper mana yang Anda gunakan (dari versi mana), dan pastikan Anda menggunakan anotasi yang tepat.sumber
org.json4s.jackson
namespace. :) dan kemungkinan implementasijackson
YMMV lainnya.Ada satu opsi lagi untuk mengganti nama bidang:
Jackson MixIns .
Berguna jika Anda berurusan dengan kelas pihak ketiga, yang tidak dapat Anda anotasi , atau Anda hanya tidak ingin mencemari kelas dengan anotasi khusus Jackson.
Dokumentasi Jackson untuk Mixins sudah usang, jadi contoh ini dapat memberikan lebih banyak kejelasan. Intinya: Anda membuat kelas mixin yang melakukan serialisasi seperti yang Anda inginkan. Kemudian daftarkan ke ObjectMapper:
sumber
Jackson
Jika Anda menggunakan Jackson, maka Anda dapat menggunakan
@JsonProperty
anotasi untuk menyesuaikan nama properti JSON yang diberikan.Oleh karena itu, Anda hanya perlu memberi anotasi pada bidang entitas dengan
@JsonProperty
anotasi dan memberikan nama properti JSON khusus, seperti ini:JavaEE atau JakartaEE JSON-B
JSON-B adalah lapisan pengikat standar untuk mengkonversi objek Java ke dan dari JSON. Jika Anda menggunakan JSON-B, maka Anda dapat mengganti nama properti JSON melalui
@JsonbProperty
anotasi:sumber