2016-04-21 57 views
1

我試圖測試傑克遜。我有一個類,沒有setters和沒有參數的構造函數(只有一個默認的構造函數和getters)。傑克遜如何實現json傳輸到對象

如下代碼:

public class BeanA { 
    private int attr1; 
    private int attr2; 

    public BeanA(){ 
    } 

    public int getAttr1(){ 
    return attr1; 
    } 

    public int getAttr2(){ 
    return attr2; 
    } 

} 

我用jackson到JSON轉移到BeanAjackson可以正常工作。

我看不懂jackson如何在沒有setter和constructor的情況下賦值。

回答

2

使用反射,通過直接分配給字段。什麼,在內部做

例子:

Object o = BeanA.class.newInstance(); 
Field attr1 = BeanA.class.getDeclaredField("attr1"); 
attr1.setAccessible(true); 
attr1.set(o, 42); 
System.out.println(((BeanA) o).getAttr1()); 
+0

謝謝。這太神奇了,可以改變能見度。 –