我一直在抓我的頭在這幾個小時現在:傑克遜JSON處理器問題
Jsckson反序列化B
但下面C
炸彈:
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);
}