直接上例子:
然后用 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个地方。
我们修改下,再测试:
本文来自博客园,作者:del88,转载请注明原文链接:https://www.cnblogs.com/del88/p/13537360.html