遇到這個問題時我找到了java
SpringMVC @RequestBody問題:Unrecognized field , not marked as ignorable json
這篇文章裏說:app
@JsonIgnoreProperties(ignoreUnknown = true),將這個註解寫在類上以後,就會忽略類中不存在的字段,能夠知足當前的須要。這個註解還能夠指定要忽略的字段。使用方法以下:ide
@JsonIgnoreProperties({ "internalId", "secretKey" })
this
指定的字段不會被序列化和反序列化。spa
可是個人bean是相似這樣的:.net
public class P { private C c; public C getC() { return c; } public void setC(C c) { this.c = c; } @Override public String toString() { return "P [c=" + c + "]"; } } public class C { private String a; private String b; private String c; public String getA() { return a; } public void setA(String a) { this.a = a; } public String getB() { return b; } public void setB(String b) { this.b = b; } public String getC() { return c; } public void setC(String c) { this.c = c; } @Override public String toString() { return "C [a=" + a + ", b=" + b + ", c=" + c + "]"; } }
個人JSON是這樣的:code
{"c":{"a":"1","b":"2","c":"3","d":"4"}}
我要轉換的是P類,而註解只有寫到C類上纔有效。而實際應用中,C類是別人提供的公共類,不可能修改。因此註解方式失敗。blog
因而我有找到了這篇文章:ci
jackson json 轉換Bean, Bean 裏沒有對應的值 jackson Unrecognized field
可是這裏面說的是Jackson1,而我用的是最新版2,因此按照他的寫法並不適用。
找了資料也沒找到有用的,而後本身試了下,2.X版本後改爲這樣:
mapper.setVisibility(PropertyAccessor.FIELD, Visibility.ANY); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
這樣就解決問題了!