以前解析json用的惯的就是Google的gson了,用惯了基本就用它了,一直也没发现什么大问题,因为都是解析简单的json数据。但是最近学习springboot,要解析一个比较复杂的json数据。就照之前的用gsonformat自动生成实体类,让gson直接解析,本想着一切ok了,可是确报错了,刚开始以为gsonformat生成的类有错误,因为毕竟json数据较为复杂,于是多生成几次,可是还是不行。面对这样复杂的数据,我可不想手动写实体类,于是想着又换了自动生成实体类的工具,可是结果还是未能如愿。于是想着能从错误的日志中发现点什么,可是无奈gson没有打印具体的出错的地方,后来捣鼓了好久,想着不如换个解析工具吧。于是上网找了找,觉得Jackson不错,赶紧试用,发现还真不错,虽然也没能解析成功,但是它打印出了详细的出错信息,照着出错的信息改了马上就解析成功了。

说说出错的原因:平时解析json呢基本接口提供的json都是很明确的,所以用gson解析一般不会有啥大问题。但是此次情况不同,接口的数据我无法完全的预知,所以实体类字段有可能不完整。所以当返回的json数据里包含了实体类没有的字段时gson就有可能出错,但是对于这种情况用gson解析我是没找到相应的解决办法,如果谁知道麻烦告知一下,谢谢。

当然用Jackson解决就非常容易了,只需要在实体类上加上注解就可以。

  1. @JsonIgnoreProperties(ignoreUnknown = true)
  2. class ExtraBean {
  3. private boolean is_museuser;
  4. public boolean isIs_museuser() {
  5. return is_museuser;
  6. }
  7. public void setIs_museuser(boolean is_museuser) {
  8. this.is_museuser = is_museuser;
  9. }
  10. }

@JsonIgnore注解用来忽略某些字段,可以用在Field或者Getter方法上,用在Setter方法时,和Filed效果一样。这个注解只能用在POJO存在的字段要忽略的情况,不能满足现在需要的情况。

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

@JsonIgnoreProperties({ "internalId", "secretKey" })
指定的字段不会被序列化和反序列化。

到此顺利解决。(还有Gson有类似的实现请告知一下,本人只知道gson转string忽略字段的方法,谢谢)

(原文地址:http://www.jianshu.com/p/f6884331d366)

同时参考了:

有时候,如果数据库表中增加一个字段,但返回的JSON字符串中含有我们并不需要的字段,那么当对应的实体类中不含有该字段时,会抛出一个异常,告诉你有些字段没有在实体类中找到。解决办法很简单,在声明ObjectMapper之后,加上上述代码:

objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

(原文地址:http://www.cnblogs.com/davidwang456/p/5434071.html)

[转]Jackson 解析json数据之忽略解析字段注解@JsonIgnoreProperties的更多相关文章

  1. Jackson 解析json数据之忽略解析字段注解@JsonIgnoreProperties

    转自:http://blog.csdn.net/ngl272/article/details/70217104 以前解析json用的惯的就是Google的gson了,用惯了基本就用它了,一直也没发现什 ...

  2. C# JavaScriptSerializer 解析Json数据(多方法解析Json 三)

    准备工作: 1.添加引用System.Web.Extensions, 2..net3.5+版本都有,如果VS2010找不到,在这个文件夹找:C:\Program Files\Reference Ass ...

  3. Android解析Json数据之Gson解析

    Gson是谷歌官方提供的解析json数据的工具类.json数据的解析能够使用JSONObject和JSONArray配合使用解析数据,可是这样的原始的方法对于小数据的解析还是有作用的,可是陪到了复杂数 ...

  4. 我的Android进阶之旅------>解决Jackson、Gson解析Json数据时,Json数据中的Key为Java关键字时解析为null的问题

    1.问题描述 首先,需要解析的Json数据类似于下面的格式,但是包含了Java关键字abstract: { ret: 0, msg: "normal return.", news: ...

  5. fastjson生成和解析json数据,序列化和反序列化数据

    本文讲解2点: 1. fastjson生成和解析json数据 (举例:4种常用类型:JavaBean,List<JavaBean>,List<String>,List<M ...

  6. Android网络之数据解析----使用Google Gson解析Json数据

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  7. fastjson生成和解析json数据

    本文讲解2点: 1. fastjson生成和解析json数据 (举例:4种常用类型:JavaBean,List<JavaBean>,List<String>,List<M ...

  8. java中json数据生成和解析(复杂对象演示)

    1.json简单介绍 1.1 json是最流行和广泛通用的数据传输格式,简称JavaScript Object Notation,最早在JavaScript中使用. 1.2 举个例子,下面是一个jso ...

  9. Spring Boot返回json数据及完美使用FastJson解析Json数据

     Spring Boot返回json数据 视频地址:http://www.iqiyi.com/w_19rubxzsr5.html 博文参考:https://blog.csdn.net/linxingl ...

随机推荐

  1. 微信小程序 - async/await

    下面只是做一些介绍以及使用的原因,详情介绍还请移步博主:https://www.cnblogs.com/SamWeb/p/8417940.html regenerator-runtime下载:http ...

  2. Linux中使用GoAccess进行日志实时监控

    一.用法命令: goaccess access_log -o /var/www/html/report.html --real-time-html 说明:请先安装Httpd和Goaccess 二.效果 ...

  3. 使用Gulp

    为什么要使用Gulp 在前端开发中通常须要做,预处理语言的编译.js文件的压缩.css文件的压缩.图片的压缩等一系列工作,而使用Gulp能够自己主动化的完毕这些工作,从而提高站点的开发效率,在我的博客 ...

  4. Linux c —— opendir函数和readdir函数内涵及用法(转)

    opendir函数 头文件:#include <sys/types.h>  #include <dirent.h> 函数:DIR *opendir(const char *na ...

  5. JAVA中的CountDownLatch、CyclicBarrier、Semaphore的简单测试

    因公司需要做一个对于CountDownLatch的分享,特写了此blog. 具体细节可以参见:小结java自带的跟锁相关的一些类 在做这个分享的过程中发现了Main和junit的运行的区别,在另外一个 ...

  6. 转 安装php时报gd相关的错误(gd_ctx.c)

    在安装php时,报如下错误 In file included from /kk/php-5.4.0/ext/gd/gd.c:103: /kk/php-5.4.0/ext/gd/gd_ctx.c: In ...

  7. 使用PHP打造QQ空间神奇图片

    说明 你一定在qq空间遇到过这样的东西:打开一张图片,上面有你的QQ号和昵称,你觉得很神奇,是不是? 其实原理很简单,那张图片是动态生成的,上面显示的信息是根据你访问的Url获得的,然后用程序动态的画 ...

  8. android使用GestureDetector实现手势下滑关闭页面的效果。

    实现类似Android风云直播手机端注册登录页,当手势向下滑动的时候,关闭页面的效果. 使用GestureDetector来实现这个效果,当手势在屏幕上面滑动的时候 ,会掉用onFling方法,所以, ...

  9. ubuntu 终端中文显示乱码问题!

    1 Alt+Ctrl+F1 进入第一个终端,发现中文乱码. 2 安装zhcon. sudo apt-get install zhcon 3 输入下面命令,启动zhcon,中文显示正常. zhcon - ...

  10. grib文件

    一.grib文件简介 WMO是世界气象组织,world meteorology organization. GRIB是WMO开发的一种用于交换和存储规则分布数据的二进制文件格式.最初GRIB表示&qu ...