1. 程式人生 > >Jackson使用PropertyNamingStrategy處理屬性首字母為大寫的情況

Jackson使用PropertyNamingStrategy處理屬性首字母為大寫的情況

最近在專案中呼叫.NET的服務時,Jackson在解析返回的json字串時始終報錯,糾結很久之後才找到原因,原來是由於json字串中的Key都是首字母大寫,導致jackson找不到相應的Key。

可以使用PropertyNamingStrategy統一處理:

ObjectMapper mapper = new ObjectMapper();
mapper.setPropertyNamingStrategy(new PropertyNamingStrategy() {
	private static final long serialVersionUID = 1L;
	// 反序列化時呼叫
	@Override
	public String nameForSetterMethod(MapperConfig<?> config,
			AnnotatedMethod method, String defaultName) {
		return method.getName().substring(3);
	}
	// 序列化時呼叫
	@Override
	public String nameForGetterMethod(MapperConfig<?> config,
			AnnotatedMethod method, String defaultName) {
		return method.getName().substring(3);
	}
});
另外也可以在屬性上添加註解:
@JsonProperty(value = "Name")
private String name;
但是這種方案需要在每個屬性上添加註解,稍顯麻煩。