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