一、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