在開發中,我們經常會遇到Bean與JSON之間的轉換。下面介紹一下如何在Spring Boot中使用Bean部分JSON。
@JsonInclude(JsonInclude.Include.NON_NULL) public class User { private Integer id; @JsonProperty("name") private String userName; @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) private String password; @JsonIgnore private String secretCode; // getters and setters }
上述代碼中,我們使用了Jackson庫的注解。其中,@JsonInclude(JsonInclude.Include.NON_NULL)
表明序列化時,如果該屬性的值為null,則不會被序列化。而@JsonProperty
指定屬性的JSON名稱,也可以用于反序列化時的字段映射。而@JsonIgnore
則表示該屬性不會被序列化或反序列化。同時,也可以使用@JsonView
為Bean的不同屬性指定不同的序列化視圖。
如果需要從JSON字符串反序列化為Bean,可以使用下面的代碼:
String json = "{ \"id\":1,\ "userName\": \"Tom\", \"password\": \"123456\", \"secretCode\": \"ABCD\" }"; ObjectMapper mapper = new ObjectMapper(); User user = mapper.readValue(json, User.class);
以上代碼使用了Jackson庫的ObjectMapper
類進行反序列化操作。如果JSON字符串中的屬性名與Bean中的屬性名不一致,可以使用JsonProperty
注解進行映射。如果JSON字符串中含有Bean中沒有的屬性,可以使用@JsonIgnoreProperties(ignoreUnknown = true)
忽略不需要的屬性。而@JsonFormat
則可以指定屬性的序列化格式,如日期格式、數字格式等。