转自:http://blog.csdn.net/ngl272/article/details/70217104html
之前解析json用的惯的就是Google的gson了,用惯了基本就用它了,一直也没发现什么大问题,由于都是解析简单的json数据。可是最近学习springboot,要解析一个比较复杂的json数据。就照以前的用gsonformat自动生成实体类,让gson直接解析,本想着一切ok了,但是确报错了,刚开始觉得gsonformat生成的类有错误,由于毕竟json数据较为复杂,因而多生成几回,但是仍是不行。面对这样复杂的数据,我可不想手动写实体类,因而想着又换了自动生成实体类的工具,但是结果仍是未能如愿。因而想着能从错误的日志中发现点什么,但是无奈gson没有打印具体的出错的地方,后来捣鼓了很久,想着不如换个解析工具吧。因而上网找了找,以为Jackson不错,赶忙试用,发现还真不错,虽然也没能解析成功,可是它打印出了详细的出错信息,照着出错的信息改了立刻就解析成功了。spring
说说出错的缘由:平时解析json呢基本接口提供的json都是很明确的,因此用gson解析通常不会有啥大问题。可是这次状况不一样,接口的数据我没法彻底的预知,因此实体类字段有可能不完整。因此当返回的json数据里包含了实体类没有的字段时gson就有可能出错,可是对于这种状况用gson解析我是没找到相应的解决办法,若是谁知道麻烦告知一下,谢谢。json
固然用Jackson解决就很是容易了,只须要在实体类上加上注解就能够。springboot
@JsonIgnoreProperties(ignoreUnknown = true) class ExtraBean { private boolean is_museuser; public boolean isIs_museuser() { return is_museuser; } public void setIs_museuser(boolean is_museuser) { this.is_museuser = is_museuser; } }
@JsonIgnore注解用来忽略某些字段,能够用在Field或者Getter方法上,用在Setter方法时,和Filed效果同样。这个注解只能用在POJO存在的字段要忽略的状况,不能知足如今须要的状况。工具
@JsonIgnoreProperties(ignoreUnknown = true),将这个注解写在类上以后,就会忽略类中不存在的字段,能够知足当前的须要。这个注解还能够指定要忽略的字段。使用方法以下:学习
@JsonIgnoreProperties({ "internalId", "secretKey" })
指定的字段不会被序列化和反序列化。this
到此顺利解决。(还有Gson有相似的实现请告知一下,本人只知道gson转string忽略字段的方法,谢谢).net
参考:
http://blog.csdn.net/isea533/article/details/33397735
http://www.cnblogs.com/dupang/p/5673097.html日志