私は今、時間、この上で、私の頭を悩まされています:ジャクソンJSONプロセッサの問題
Jscksonは以下C
上B
が、爆弾をデシリアライズ:
B
とC
はA
の両方のサブクラスであるため、セッターを持っていますgetName
。 Name
の大文字のN
は、私のJSONの見た目です。 デシリアライズC
は、認識できないフィールド名Name
について文句を言うと、B
の場合は問題ありません。
バージョン1.7.2
ObjectMapper mapper = new ObjectMapper();
mapper.getDeserializationConfig().addMixInAnnotations(B.class, MixIn.class);
String json = "{\"Name\" : \"13\"}";
B b = m.readValue(json, B.class);
System.out.println(b.getName());
C c = m.readValue(json, C.class);
System.out.println(c.getName());
public class A {
private int id ;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public class B extends A {
private String address;
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
public class C extends A {
private String country;
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
}
@JsonAutoDetect(fieldVisibility = Visibility.NONE,setterVisibility=Visibility.ANY)
abstract class MixIn {
@JsonProperty("Name")
public abstract void setName(String name);
@JsonProperty("Id")
public abstract void setId(int id);
}