直接上例子:
然后用 Idea 自動生成 getter 和 setter
public class XyzBean { //最普通的 private String name; //Boolean類型,帶is前綴(3處都要手工修改成標准的,若不手工修改,自己看后果) private Boolean isHis; //Boolean類型,沒有is前綴(完全沒有問題) private Boolean noIs; //String類型,帶is前綴(完全沒有問題) private String isMan; //Long類型,帶is前綴,Integer一樣,不舉例了(完全沒有問題) private Long isLong; public String getName() { return name; } public void setName(String name) { this.name = name; } //方法名這里少了is,應該是getIsHis public Boolean getHis() { return isHis; } //方法名這里少了is, 應該是 setIsSuccess public void setHis(Boolean his) {//參數名,應該是 isHis //這里又少了this關鍵字,應該是 this.isHis = isHis; isHis = his; } public Boolean getNoIs() { return noIs; } public void setNoIs(Boolean noIs) { this.noIs = noIs; } public String getIsMan() { return isMan; } public void setIsMan(String isMan) { this.isMan = isMan; } public Long getIsLong() { return isLong; } public void setIsLong(Long isLong) { this.isLong = isLong; } }
假如用這個 XyzBean 做返回,我們把它 序列化成 json看下 會是什么樣子的:
public class TestMain { public static void main(String[] args) throws JsonProcessingException { ObjectMapper objectMapper = new ObjectMapper(); XyzBean xyzBean = new XyzBean(); xyzBean.setName("我操"); xyzBean.setHis(true); xyzBean.setNoIs(false); xyzBean.setIsMan("yes"); xyzBean.setIsLong(1L); System.out.println(objectMapper.writeValueAsString(xyzBean)); } }
{"name":"我操","noIs":false,"isMan":"yes","isLong":1,"his":true}//根本就不存在 his 屬性,我們都沒有定義,怎么出來一個 這個
問題就出來了,屬性名發生了變化,坑啊 草草草
解決方法,凡是 boolean 類型的 is開頭的 不用 idea 自動生成,或生成后 自己手工修改3個地方。
我們修改下,再測試: