2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Astuce : Une fois l'article rédigé, la table des matières peut être générée automatiquement. Pour savoir comment la générer, veuillez vous référer au document d'aide à droite.
@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>
L'annotation @JSONproperty est utilisée pourLes attributsau-dessus de
L'annotation @JSONField peut être utiliséeobtenir, définir et propriétésau-dessus de
L'annotation @JSONField est plus simple à utiliser. La valeur par défaut de l'annotation est la même que le nom de la propriété, tandis que @JsonProperty nécessite de spécifier manuellement le nom de la propriété.
L'annotation @JSONField prend en charge davantage d'options de mappage d'attributs, telles que le format de date lors de la sérialisation, la gestion des valeurs nulles, etc.
Les performances de l'annotation @JSONField sont plus rapides car fastjson lui-même est une bibliothèque de traitement JSON hautes performances
Lorsque vous utilisez le framework Jackson, vous ne pouvez utiliser que l'annotation @JsonProperty et ne pouvez pas utiliser l'annotation @JSONField.
Si vous utilisez un nouveauprojet Springboot, la valeur par défaut est la sérialisation Jackson, utilisez simplement les annotations directement sur les propriétés.
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>版本号</version>
</dependency>
Classe d'entité : 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;
}
Méthodes d'essai:
@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());
}
Résultats de test:
{"sex":"man","age":22,"JsonPropertyName":"zhangsan"}
User [name=zhangsan, sex=man, age=22]
On peut voir qu'une fois le bean converti en chaîne json, le nom de la propriété du bean annoté avec @JsonProperty a été remplacé par le nom de propriété spécifié : JsonPropertyName ;
Une fois la chaîne json convertie en bean, le nom de propriété spécifié par l'annotation @JsonProperty a été remplacé par le nom de propriété du bean : name;
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>版本号</version>
</dependency>
Classe d'entité : 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;
}
Méthodes d'essai:
@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());
}
Résultats de test:
{"JSONFieldName":"zhangsan","age":22,"sex":"man"}
User [name=zhangsan, sex=man, age=22]
L'attribut format peut être utilisé pour spécifier le format des attributs de type date et le format de conversion des types numériques en types chaîne.
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;
}
Dans l'exemple ci-dessus, l'attribut userId est exclu de la sérialisation à l'aide de l'annotation @JSONField
public class User {
private int userId;
private String name;
@JSONField(deserialize = false)
private int age;
}
Dans l'exemple ci-dessus, la propriété age est exclue de la désérialisation à l'aide de l'annotation @JSONField
L'ordre des attributs peut être spécifié via l'attribut ordinal
public class User {
@JSONField(ordinal = 2)
private String name;
@JSONField(ordinal = 1)
private int age;
}
Dans l'exemple ci-dessus, l'annotation @JSONField est utilisée pour spécifier l'ordre de l'attribut age sur 1 et l'ordre de l'attribut name sur 2.
L'attribut defaultValue peut être utilisé pour spécifier la valeur par défaut de l'attribut dans l'objet Java.
public class User {
@JSONField(defaultValue = "0")
private int userId;
@JSONField(defaultValue = "N/A")
private String name;
private int age;
}
Dans l'exemple ci-dessus, l'annotation @JSONField est utilisée pour spécifier que la valeur par défaut de l'attribut userId est 0 et que la valeur par défaut de l'attribut name est "N/A".
public class User {
private int userId;
@JSONField(type = FieldType.STRING)
private int age;
}
Dans l'exemple ci-dessus, l'annotation @JSONField est utilisée pour spécifier le type de l'attribut age sous forme de type chaîne.