Jackson2 json 轉換Bean, Bean 裏沒有對應的值 jackson Un的解決方式

遇到這個問題時我找到了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);

這樣就解決問題了!

相關文章
相關標籤/搜索