informasi kontak saya
Surat[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Tip: Setelah artikel ditulis, daftar isi dapat dibuat secara otomatis. Untuk cara menghasilkannya, silakan lihat dokumen bantuan di sebelah kanan.
@JsonProperty(value = "isReceipt")
public boolean isReceipt() {
return isReceipt;
}
@JsonProperty(value = "isExamine")
public boolean isExamine() {
return isExamine;
}
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>版本号</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>版本号</version>
</dependency>
Anotasi @JSONproperty digunakan untukAtributdi atas
Anotasi @JSONField dapat digunakandapatkan, atur, dan propertidi atas
Anotasi @JSONField lebih mudah digunakan. Nilai default anotasi sama dengan nama properti, sedangkan @JsonProperty memerlukan penentuan nama properti secara manual.
Anotasi @JSONField mendukung lebih banyak opsi pemetaan atribut, seperti format tanggal selama serialisasi, cara menangani nilai null, dll.
Performa anotasi @JSONField lebih cepat karena fastjson sendiri merupakan pustaka pemrosesan JSON berperforma tinggi
Saat menggunakan kerangka Jackson, Anda hanya dapat menggunakan anotasi @JsonProperty dan tidak dapat menggunakan anotasi @JSONField.
Jika Anda menggunakan yang baruproyek boot musim semi, defaultnya adalah serialisasi Jackson, cukup gunakan anotasi langsung di properti.
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>版本号</version>
</dependency>
Kelas entitas: User.java
import com.fasterxml.jackson.annotation.JsonProperty;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
@JsonProperty("JsonPropertyName")
private String name;
private String sex;
private Integer age;
}
Metode tes:
@Test
public void testJsonProperty() throws IOException{
//bean ---> json
User user=new User("zhangsan","man",22);
System.out.println(new ObjectMapper().writeValueAsString(user));
//json ---> bean
String str="{"sex":"man","age":22,"JsonPropertyName":"zhangsan"}";
System.out.println(new ObjectMapper().readValue(str, User.class).toString());
}
Hasil tes:
{"sex":"man","age":22,"JsonPropertyName":"zhangsan"}
User [name=zhangsan, sex=man, age=22]
Terlihat bahwa setelah bean diubah menjadi string json, nama properti bean yang dianotasi dengan @JsonProperty telah diganti dengan nama properti yang ditentukan: JsonPropertyName;
Setelah string json diubah menjadi bean, nama properti yang ditentukan oleh anotasi @JsonProperty telah diganti dengan properti bean name: name;
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>版本号</version>
</dependency>
Kelas entitas: User.java
import com.alibaba.fastjson.annotation.JSONField;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
@JSONField(name="JSONFieldName")
private String name;
private String sex;
private Integer age;
}
Metode tes:
@Test
public void testSONField(){
//bean ---> json
User user=new User("zhangsan","man",22);
System.out.println(JSON.toJSONString(user));
//json ---> bean
String str="{"JSONFieldName":"zhangsan","age":22,"sex":"man"}";
System.out.println(JSON.parseObject(str, User.class).toString());
}
Hasil tes:
{"JSONFieldName":"zhangsan","age":22,"sex":"man"}
User [name=zhangsan, sex=man, age=22]
Atribut format dapat digunakan untuk menentukan format atribut tipe tanggal dan format konversi tipe numerik menjadi tipe string.
public class User {
private String name;
private int age;
@JSONField(format = "yyyy-MM-dd")
private Date birthday;
@JSONField(format = "#,###.00")
private double salary;
}
public class User {
@JSONField(serialize = false)
private int userId;
private String name;
private int age;
}
Dalam contoh di atas, atribut userId dikecualikan dari serialisasi menggunakan anotasi @JSONField
public class User {
private int userId;
private String name;
@JSONField(deserialize = false)
private int age;
}
Dalam contoh di atas, properti age dikecualikan dari deserialisasi menggunakan anotasi @JSONField
Urutan atribut dapat ditentukan melalui atribut ordinal
public class User {
@JSONField(ordinal = 2)
private String name;
@JSONField(ordinal = 1)
private int age;
}
Dalam contoh di atas, anotasi @JSONField digunakan untuk menentukan urutan atribut age sebagai 1 dan urutan atribut name sebagai 2.
Atribut defaultValue dapat digunakan untuk menentukan nilai default atribut di objek Java.
public class User {
@JSONField(defaultValue = "0")
private int userId;
@JSONField(defaultValue = "N/A")
private String name;
private int age;
}
Dalam contoh di atas, anotasi @JSONField digunakan untuk menentukan bahwa nilai default atribut userId adalah 0 dan nilai default atribut name adalah "N/A"
public class User {
private int userId;
@JSONField(type = FieldType.STRING)
private int age;
}
Dalam contoh di atas, anotasi @JSONField digunakan untuk menentukan tipe atribut age sebagai tipe string.