2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Tipp: Nachdem der Artikel geschrieben wurde, kann das Inhaltsverzeichnis automatisch generiert werden. Informationen zur Generierung finden Sie im Hilfedokument auf der rechten Seite.
@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>
Die Annotation @JSONproperty wird verwendet fürAttributeüber
Die Annotation @JSONField kann verwendet werdenget, set und Propertiesüber
Die Annotation @JSONField ist einfacher zu verwenden. Der Standardwert der Annotation ist derselbe wie der Eigenschaftsname, während @JsonProperty die manuelle Angabe des Eigenschaftsnamens erfordert.
Die @JSONField-Annotation unterstützt weitere Attributzuordnungsoptionen, z. B. das Datumsformat während der Serialisierung, den Umgang mit Nullwerten usw.
Die Leistung der @JSONField-Annotation ist schneller, da fastjson selbst eine leistungsstarke JSON-Verarbeitungsbibliothek ist
Wenn Sie das Jackson-Framework verwenden, können Sie nur die Annotation @JsonProperty und nicht die Annotation @JSONField verwenden.
Wenn Sie ein neues verwendenSpringboot-Projekt, der Standardwert ist Jackson-Serialisierung, verwenden Sie einfach Anmerkungen direkt in den Eigenschaften.
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>版本号</version>
</dependency>
Entitätsklasse: 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;
}
Testmethoden:
@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());
}
Testergebnisse:
{"sex":"man","age":22,"JsonPropertyName":"zhangsan"}
User [name=zhangsan, sex=man, age=22]
Es ist ersichtlich, dass nach der Konvertierung der Bean in einen JSON-String der mit @JsonProperty annotierte Bean-Eigenschaftsname durch den angegebenen Eigenschaftsnamen ersetzt wurde: JsonPropertyName;
Nachdem der JSON-String in eine Bean konvertiert wurde, wurde der in der Annotation @JsonProperty angegebene Eigenschaftsname durch den Bean-Eigenschaftsnamen ersetzt: name;
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>版本号</version>
</dependency>
Entitätsklasse: 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;
}
Testmethoden:
@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());
}
Testergebnisse:
{"JSONFieldName":"zhangsan","age":22,"sex":"man"}
User [name=zhangsan, sex=man, age=22]
Das Formatattribut kann verwendet werden, um das Format von Datumstypattributen und das Format für die Konvertierung numerischer Typen in Zeichenfolgentypen anzugeben.
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;
}
Im obigen Beispiel wird das userId-Attribut mithilfe der @JSONField-Annotation von der Serialisierung ausgeschlossen
public class User {
private int userId;
private String name;
@JSONField(deserialize = false)
private int age;
}
Im obigen Beispiel wird die Alterseigenschaft mithilfe der Annotation @JSONField von der Deserialisierung ausgeschlossen
Die Reihenfolge der Attribute kann über das Ordinalattribut angegeben werden
public class User {
@JSONField(ordinal = 2)
private String name;
@JSONField(ordinal = 1)
private int age;
}
Im obigen Beispiel wird die Annotation @JSONField verwendet, um anzugeben, dass die Reihenfolge des Altersattributs 1 und die Reihenfolge des Namensattributs 2 ist.
Mit dem Attribut defaultValue kann der Standardwert des Attributs im Java-Objekt angegeben werden.
public class User {
@JSONField(defaultValue = "0")
private int userId;
@JSONField(defaultValue = "N/A")
private String name;
private int age;
}
Im obigen Beispiel wird die Annotation @JSONField verwendet, um anzugeben, dass der Standardwert des userId-Attributs 0 und der Standardwert des name-Attributs „N/A“ ist.
public class User {
private int userId;
@JSONField(type = FieldType.STRING)
private int age;
}
Im obigen Beispiel wird die Annotation @JSONField verwendet, um den Typ des Altersattributs als Zeichenfolgentyp anzugeben.