minhas informações de contato
Correspondência[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Dica: Depois que o artigo for escrito, o índice poderá ser gerado automaticamente. Para saber como gerá-lo, consulte o documento de ajuda à direita.
@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>
A anotação @JSONproperty é usada paraAtributosacima
A anotação @JSONField pode ser usadaobter, definir e propriedadesacima
A anotação @JSONField é mais simples de usar. O valor padrão da anotação é igual ao nome da propriedade, enquanto @JsonProperty requer a especificação manual do nome da propriedade.
A anotação @JSONField oferece suporte a mais opções de mapeamento de atributos, como formato de data durante a serialização, como lidar com valores nulos, etc.
O desempenho da anotação @JSONField é mais rápido porque o próprio fastjson é uma biblioteca de processamento JSON de alto desempenho
Ao usar a estrutura Jackson, você só pode usar a anotação @JsonProperty e não pode usar a anotação @JSONField.
Se você estiver usando um novoprojeto springboot, o padrão é serialização Jackson, basta usar anotações diretamente nas propriedades.
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>版本号</version>
</dependency>
Classe de entidade: 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étodos de teste:
@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());
}
Resultado dos testes:
{"sex":"man","age":22,"JsonPropertyName":"zhangsan"}
User [name=zhangsan, sex=man, age=22]
Pode-se observar que após o bean ser convertido em uma string json, o nome da propriedade do bean anotado com @JsonProperty foi substituído pelo nome da propriedade especificada: JsonPropertyName;
Depois que a string json é convertida em um bean, o nome da propriedade especificado pela anotação @JsonProperty foi substituído pelo nome da propriedade do bean: name;
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>版本号</version>
</dependency>
Classe de entidade: 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étodos de teste:
@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());
}
Resultado dos testes:
{"JSONFieldName":"zhangsan","age":22,"sex":"man"}
User [name=zhangsan, sex=man, age=22]
O atributo format pode ser usado para especificar o formato dos atributos de tipo de data e o formato de conversão de tipos numéricos em tipos de 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;
}
No exemplo acima, o atributo userId é excluído da serialização usando a anotação @JSONField
public class User {
private int userId;
private String name;
@JSONField(deserialize = false)
private int age;
}
No exemplo acima, a propriedade age é excluída da desserialização usando a anotação @JSONField
A ordem dos atributos pode ser especificada através do atributo ordinal
public class User {
@JSONField(ordinal = 2)
private String name;
@JSONField(ordinal = 1)
private int age;
}
No exemplo acima, a anotação @JSONField é usada para especificar a ordem do atributo age como 1 e a ordem do atributo name como 2.
O atributo defaultValue pode ser usado para especificar o valor padrão do atributo no objeto Java.
public class User {
@JSONField(defaultValue = "0")
private int userId;
@JSONField(defaultValue = "N/A")
private String name;
private int age;
}
No exemplo acima, a anotação @JSONField é usada para especificar que o valor padrão do atributo userId é 0 e o valor padrão do atributo name é "N/A"
public class User {
private int userId;
@JSONField(type = FieldType.STRING)
private int age;
}
No exemplo acima, a anotação @JSONField é usada para especificar o tipo do atributo age como um tipo de string.