2017-05-04 77 views
0

我有2個班傑克遜子類覆蓋領域

public class A { 
    protected String id; 
} 

而且

public class B extends A { 
    private String bval; 
} 

我們收到B類的JSON有不同的名稱標識,是有辦法告訴傑克遜使用classB中id的另一個屬性名稱與classA中的不同?

+1

變量可能是聲明爲'protected' –

回答

0

Obe這樣做的方法是使用「任何setter」功能,其中Jackson被告知調用所有「未知」屬性的方法。然後,您可以做作業自己:

public class B extends A { 

    // all unknown properties will go here 
    @JsonAnySetter 
    public void setUnknownProperty(String key, Object value) { 
     if (key.equals("anotherNameForId")) { 
      id = (String)value; 
     } 
    } 
+0

這是一個好主意,我找到了一個稍微更輕的解決方案 – Alex

0

我用的是龍目島

@Getter(onMethod = @__(@JsonProperty("id"))) 

和B類

@Override 
@JsonProperty("bID") 
public String getId(){ 
    return this.id; 
} 
+0

我以爲你說你收到json,這意味着setter被稱爲? –

+0

是的,我們確實收到JSON,但傑克遜可以在該領域的吸氣劑上使用註釋 – Alex