导航:首页 > 编程大全 > jackson工具类

jackson工具类

发布时间:2023-03-05 09:27:25

1. GitHub上面有哪些经典的java框架源码

2. jackson使用入门

jackson是java中最常用的json处理工具包之一,其他类似功能的包括gson和fastjson等。本文将简单介绍jackson的基础知识,以作为各位读者未来使用的参考。

jackson有三种处理json的方式,分别为

这种方式可以在json字符串和pojo对象之间直接进行转换。比如说我们有一个json字符串

通过这种方式我们可以直接将其转换成一个Person类的实例,其中firstName和lastName是Person类定义的两个成员变量。

这种方式类似于xml的DOM解析,在json字符串和DOM树之间进行转换,DOM树的节点是 JsonNode 类型。其优点在于以统一的方式看待json字符串中的各个部分,使用起来更灵活。

如何构建 JsonNode 的DOM树呢? JsonNode 是抽象类,需要使用 ObjectNode 和 ArrayNode 等子类。

这种方式类似于xml的SAX解析,每次处理一个事件,或者这里叫token更合适。

反序列化用的是 JsonParser ,它的使用方式和迭代器非常相似。你每次处理的都是一个token,比如说在上面这个json字符串中,包括{、firstName、dizzy、lastName、dwarf、}等6个token,通过调用 nextToken 方法可以获得下一个token。

序列化用的 JsonGenerator ,它的方法都非常直观,比如说 writeStartObject 、 writeStringField 、 writeEndObject 等,这里就不具体介绍了。

通过注解可以定制jackson的各种特性,这里只介绍最常用的几个。

这样一个firstName为"dizzy"的Person序列化后就变成了

一般情况下java变量命名采用驼峰方式,而json字符串可能采用下划线方式。解决方式为在类或者成员变量上增加以下注解

需要注意的是虽然反序列化的时候first_name会对应到firstName变量,但是序列化的时候也会输出为first_name

有时候我们希望根据json字符串中某个字段的取值反序列化成不同的子类,比如说type为1是Student,type为2是Teacher,注意Student和Teacher必须继承同一个父类Person。

如果我们希望ObjectMapper.readValue返回List<Person>或者Map<String, Person>,由于List<Person>.class和Map<String, Person>.class在java中是不合法的,需要借助于 TypeReference

Spring提供的 类封装了 ObjectMapper ,如果希望对 ObjectMapper 进行定制,可以自己生成一个 对象并注册为bean

有时候我们希望只对部分成员变量进行序列化,如果用 @JsonIgnore ,会同时影响反序列化。这个时候我们可以用 @JsonView 注解指定某个视图类的序列化结果包含该成员变量。

阅读全文

与jackson工具类相关的资料

热点内容
为什么程序员讨厌中文编程 浏览:338
数控车床编程g40是什么意思 浏览:782
人们花钱为什么逐渐网络化 浏览:272
如何用编程办理电信业务 浏览:189
数控磨床小圆弧怎么编程 浏览:390
桐乡编程猫在哪里 浏览:69
同一文件夹存储大量文件 浏览:126
chrome修改js 浏览:842
用pad怎么发word文件怎么打开 浏览:465
哪个网站有幼 浏览:299
航班APP哪个最好 浏览:590
网络原创如何增强教育活力 浏览:527
苹果第三方打开文件 浏览:310
苹果电脑桌面移除的文件夹怎么恢复 浏览:292
在文件名前添加字符 浏览:424
javaexcel导出控件 浏览:484
怎么样粉碎文件 浏览:798
谷歌网站怎么更新 浏览:934
svn命令行删除文件夹 浏览:277
如何建立共享数据表 浏览:247

友情链接