JackSon序列化失败问题


*** java.lang.instrument ASSERTION FAILED ***: "!errorOutstanding" with message transform method call failed at JPLISAgent.c line: 844
*** java.lang.instrument ASSERTION FAILED ***: "!errorOutstanding" with message transform method call failed at JPLISAgent.c line: 844
*** java.lang.instrument ASSERTION FAILED ***: "!errorOutstanding" with message transform method call failed at JPLISAgent.c line: 844
*** java.lang.instrument ASSERTION FAILED ***: "!errorOutstanding" with message transform method call failed at JPLISAgent.c line: 844
*** java.lang.instrument ASSERTION FAILED ***: "!errorOutstanding" with message transform method call failed at JPLISAgent.c line: 844
jackson通过调用实体类的get方法获取值,实体方法中存在clone方法时,在get开头的方法中调用时,就会出现无限循环,进而序列化失败。
测试复现:
public class Son implements Cloneable {
@Override
protected Son clone() throws CloneNotSupportedException {
return (Son)super.clone();
}

public Son getClone() throws CloneNotSupportedException {
    return this.clone();
}
private int hight ;

private int start ;

private List<Address> address;

public int getHight() {
    return hight;
}

public int getStart() {
    return start;
}

public void setHight(int hight) {
    this.hight = hight;
}

public void setStart(int start) {
    this.start = start;
}

public List<Address> getAddress() {
    return address;
}

public void setAddress(List<Address> address) {
    this.address = address;
}

@Override
public String toString() {
    return "Son{" +
            "hight=" + hight +
            ", start=" + start +
            ", address=" + address +
            '}';
}

}
public static void main(String[] args) throws JsonProcessingException {
Son son = new Son();
son.setHight(1);
son.setStart(2);
ObjectMapper mapper = new ObjectMapper();
System.out.println(mapper.writeValueAsString(son));
Son son1 = mapper.readValue(mapper.writeValueAsString(son), Son.class);
System.out.println(son1);
}


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM