一、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/n/282776.html