Jackson2 json 转换Bean, Bean 里没有对应的值 jackson Un的解决方式

遇到这个问题时我找到了

SpringMVC @RequestBody问题:Unrecognized field , not marked as ignorable

这篇文章里说:

@JsonIgnoreProperties(ignoreUnknown = true),将这个注解写在类上之后,就会忽略类中不存在的字段,可以满足当前的需要。这个注解还可以指定要忽略的字段。使用方法如下:

@JsonIgnoreProperties({ "internalId", "secretKey" })

指定的字段不会被序列化和反序列化。

但是我的bean是类似这样的:

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是这样的:

{"c":{"a":"1","b":"2","c":"3","d":"4"}}

我要转换的是P类,而注解只有写到C类上才有效。而实际应用中,C类是别人提供的公共类,不可能修改。所以注解方式失败。

于是我有找到了这篇文章:

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);

这样就解决问题了!

转载于:https://my.oschina.net/u/568577/blog/386107

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值