博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Jackson2 json 转换Bean, Bean 里没有对应的值 jackson Un的解决方式
阅读量:6953 次
发布时间:2019-06-27

本文共 1170 字,大约阅读时间需要 3 分钟。

hot3.png

遇到这个问题时我找到了

这篇文章里说:

@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类是别人提供的公共类,不可能修改。所以注解方式失败。

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

但是这里面说的是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

你可能感兴趣的文章
使用 Ruby 拓展 Vim
查看>>
centos7下安装LNMP(nginx+PHP7.1.9+mysql5.7)
查看>>
NodeAPI学习之Buffer
查看>>
深入java单例模式
查看>>
create-react-app
查看>>
20170812-XSS跨站脚本攻击
查看>>
Let’s Build |> 使用Elixir,Phoenix和React打造克隆版的Slack(part 1)
查看>>
如何让 StackNaivgator 实现越级回跳
查看>>
工具简述
查看>>
Hbase 集群搭建
查看>>
分布式文件服务器dfs
查看>>
正则表达式
查看>>
关于直播视频格式和浏览器兼容性历史的来龙去脉
查看>>
是的,InfoQ正在招聘技术编辑!跟对的人,一起做喜欢的事!
查看>>
vue2+vue-cli,dis文件加载出错解决方案
查看>>
立下“去O”Flag的AWS,悄悄修炼了哪些内功?
查看>>
关于团队建设,穆帅能教我们什么?
查看>>
2019 SRE 调查报告:事故处理是主要工作,SRE 压力山大
查看>>
xpath学习
查看>>
Java工程师的成长路线图是什么?
查看>>