一、JsonProperty是什麼
1、JsonProperty是Jackson庫中的一個註解,是用於序列化和反序列化Java對象和JSON之間的轉換的。通過Java對象的屬性和JSON的key之間的映射,JsonProperty可以讓我們自定義JSON生成的形式。
2、JsonProperty通常使用在Java Bean的get和set方法上,可以指定對應的JSON中的屬性名。
3、JsonProperty可以用在屬性、getter和setter方法上,也可以在類級別上使用,對整個類中所有的字段起作用。
public class User {
@JsonProperty("username")
private String name;
private String email;
@JsonCreator
public User(@JsonProperty("name") String name,
@JsonProperty("email") String email) {
this.name = name;
this.email = email;
}
@JsonProperty("name")
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
@JsonProperty("email")
public void setEmail(String email) {
this.email = email;
}
}
二、如何使用JsonProperty
1、使用JsonProperty註解:
在Java Bean的get和set方法上使用JsonProperty,可以指定對應的JSON中的屬性名:
public class User {
@JsonProperty("username")
private String name;
@JsonProperty("name")
public void setName(String name) {
this.name = name;
}
@JsonProperty("username")
public void setUsername(String username) {
this.name = username;
}
}
2、使用JsonCreator註解:
在構造函數的參數前使用JsonProperty可以指定對應的JSON中的屬性名:
public class User {
private String name;
private String email;
@JsonCreator
public User(@JsonProperty("name") String name,
@JsonProperty("email") String email) {
this.name = name;
this.email = email;
}
}
3、在類級別上使用@JsonPropertyOrder註解:
JsonPropertyOrder註解可以指定Java Bean轉為JSON時屬性的順序:
@JsonPropertyOrder({ "name", "email" })
public class User {
private String name;
private String email;
}
三、JsonProperty的作用
1、可以自定義JSON生成的形式。
2、可以指定屬性在生成JSON時的順序。
3、可以指定Java Bean中屬性與JSON中的key之間的映射關係。
4、可以使反序列化更加靈活方便,可以根據JsonProperty(“XXX”)的值進行反序列化。
四、JsonProperty示例
下面是一個簡單的例子,通過JsonProperty註解,實現了Java對象到JSON的轉換:
public class User {
@JsonProperty("username")
private String name;
private String email;
public User(String name, String email) {
this.name = name;
this.email = email;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
public class Main {
public static void main(String[] args) throws Exception {
ObjectMapper mapper = new ObjectMapper();
User user = new User("John", "john@example.com");
String json = mapper.writeValueAsString(user);
System.out.println(json);
User user2 = mapper.readValue(json, User.class);
System.out.println(user2.getName());
}
}
運行結果如下:
{“username”:”John”,”email”:”john@example.com”}
John
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/282776.html
微信掃一掃
支付寶掃一掃