默认
- 调用POJO的无参构造函数,构造一个java对象
- 为每一个成员变量调用setter进行赋值。
默认情况下,使用Jackson做反序列化时,必须有public无参构造函数,必须有成员变量的set方法。
@JsonCreator注解
加在构造方法上
使用@JsonProperty("json字段名")定义构造函数的参数。
1 2 3 4 5 6 7 8 9 10 11
| public class User { private String name; private int age; @JsonCreator public User(@JsonProperty("name") String name, @JsonProperty("age") Integer age) { this.name = name; this.age = age; } }
|
加在工厂静态方法上
1 2 3 4 5 6 7
| @JsonCreator public static User createUser(@JsonProperty("name") String name,@JsonProperty("age") Integer age){ User user = new User(); user.name = name; user.age = age; return user; }
|
@ConstructorProperties注解
@ConstructorProperties只能加在构造方法上,使用更方便
1 2 3 4 5 6 7 8 9 10
| public class User { private String name; private int age; @ConstructorProperties({"name", "age"}) public User(String name, int age) { this.name = name; this.age = age; } }
|