我有2個班傑克遜子類覆蓋領域
public class A {
protected String id;
}
而且
public class B extends A {
private String bval;
}
我們收到B類的JSON有不同的名稱標識,是有辦法告訴傑克遜使用classB中id的另一個屬性名稱與classA中的不同?
我有2個班傑克遜子類覆蓋領域
public class A {
protected String id;
}
而且
public class B extends A {
private String bval;
}
我們收到B類的JSON有不同的名稱標識,是有辦法告訴傑克遜使用classB中id的另一個屬性名稱與classA中的不同?
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;
}
}
這是一個好主意,我找到了一個稍微更輕的解決方案 – Alex
我用的是龍目島
@Getter(onMethod = @__(@JsonProperty("id")))
和B類
@Override
@JsonProperty("bID")
public String getId(){
return this.id;
}
我以爲你說你收到json,這意味着setter被稱爲? –
是的,我們確實收到JSON,但傑克遜可以在該領域的吸氣劑上使用註釋 – Alex
變量可能是聲明爲'protected' –