java jackson包_Jackson jar包的使用
概述
Jackson框架是基于Java平台的一套数据处理工具,被称为“最好的Java Json解析器”。
Jackson框架包含了3个核心库:streaming,databind,annotations.Jackson还包含了其它数据处理类库,此外不作说明。
Jackson版本: 1.x (目前版本从1.1~1.9)与2.x。1.x与2.x从包的命名上可以看出来,1.x的类库中,包命名以:org.codehaus.jackson.xxx开头,而2.x类库中包命令:com.fastxml.jackson.xxx开头
Jackson Home Page:https://github.com/FasterXML/jackson
Jackson Wiki:http://wiki.fasterxml.com/JacksonHome
Jackson doc: https://github.com/FasterXML/jackson-docs
Jackson Download Page:http://wiki.fasterxml.com/JacksonDownload
准备工作
本文所有程序都基于JDK1.7,依赖jackon的三个核心类库:
jackson-core-2.5.3.jar
jackson-annotations-2.5.3.jar
jackson-databind-2.5.3.jar
Jackson处理Json
Jackson提供了三种可选的Json处理方法:流式API(Streaming API) 、树模型(Tree Model)、数据绑定(Data Binding)。从使用角度来看,比较一下这三种处理Json的方式的特性:
Streaming API:是效率最高的处理方式(开销低、读写速度快,但程序编写复杂度高)
Tree Model:是最灵活的处理方式
Data Binding:是最常用的处理方式
下面我们通过例子程序分别使用DataBinding,TreeModel,Streaming的方式来创建和解析Json字符串
1.DataBinding处理Json
Jackson支持Java对象与Json之间的相互转化。java对象序列化为json字符串,json字符串也可以反序列化为相同的java对象。
package com.cn.test;
import java.io.File;
import java.io.IOException;
import com.fasterxml.jackson.databind.ObjectMapper;
public class JsonText {
public JsonText(String id, String name) {
this.id = id;
this.name = name;
}
private String id;
private String name;
public String getId() {
return id;
}
public String getName() {
return name;
}
public int getAge(){
return 21;
}
public String getAddress(){
return "贵州兴仁";
}
public static void main(String[] args) throws IOException {
//1.导入jar包
//创建ObjectMapper mapper 对象
ObjectMapper mapper = new ObjectMapper();
//3.调用mapper的 writeValueAsString() 方法把一个对象转为一个JSON字符串
JsonText json = new JsonText("10001","zy");
String jsonStr = mapper.writeValueAsString(json);
System.out.println(jsonStr);
//将JAVA对象转化为Json格式的文件
mapper.writeValue(new File("src/com/cn/test/JsonText.json"), json);
}
}
将json格式反序列化为JavaBeans
package com.cn.test;
import java.io.File;
import java.io.IOException;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
public class JsonToBeabs {
public static void main(String[] args) throws JsonParseException, JsonMappingException, IOException {
ObjectMapper mapper = new ObjectMapper();
File json = new File("src/com/cn/test/JsonText.json");
//当反序列化json时,未知属性会引起的反序列化被打断,这里我们禁用未知属性打断反序列化功能,
//因为,例如json里有4个属性,而我们的bean中只定义了2个属性,其它8个属性将被忽略
mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
JsonText js = mapper.readValue(json, JsonText.class);
System.out.println(js);
}
}
java jackson包_Jackson jar包的使用相关推荐
- linux java jar打包_【Java】Java程序打包成jar包在Linux上运行
当需要把在Windows上开发的Java程序用在Linux上运行时,就需要吧该Java程序打包成jar包上传到Linux上去运行. 1.Java程序用MyEclipse打包成可运行的jar包 (1)在 ...
- Docker安装java环境并部署jar包运行
Docker安装java环境并部署jar包运行 作为一个前端,了解后端部署jar包也是有必要的,在这里就我学习的,做一个简单的笔记,这里可以结合我的商品的增删改查的java文章一起看. java实现商 ...
- 阿里云部署启动java项目全过程(jar包war包)
hi,大家好,今天给大家分享如何在阿里云上部署我们写好的项目. 在云端部署java项目有两种方式,第一种是以jar包另一种是以war包,首先我们得了解这两个方式得区别. war包:在我们使用javaw ...
- java 打war包,jar包
假定有一个Web应用:C:\myHome myHome/WEB-INF/-- myHome/files/-- myHome/image/-- myHome/src/-- myHome/index.js ...
- JDBC之 java - mysql 各个版本 jar包 驱动
方法一 JDBC之 java - mysql 各个版本 jar包 驱动 : http://central.maven.org/maven2/mysql/mysql-connector-java/ 例如 ...
- java调用jar并传参,Java项目导出为jar包+导出第三方jar包+使用命令行调用+传参
Java项目导出为jar包+导出第三方jar包+使用命令行调用+传参 一.打包 情况1:不需要向程序传参数,并且程序没有使用第三方jar包 Eclipse上导出jar: 然后选择一个java文件作为入 ...
- Java项目安全发布--Jar包(class)加解密实践
一.背景 有项目需要在客户机器上进行本地部署,这就涉及到自家代码的安全性问题.需要保证以下几点: 代码不能被他人"窃取"(保证源码不可见) 不能通过已有项目复制一份系统出来(即使源 ...
- java项目(java project)如何导入jar包的解决方案列表
右键项目-properties-java build path(左侧菜单)-选择libraries 有两种方式,导入jar包实际上就是建立一种链接,并不是copy式的导入 一.导入外部包,add ex ...
- android jar 加入图片,Android动态加载外部jar包及jar包中图片等资源文件
Android动态加载外部jar包及jar包中图片等资源文件 Android应用程序由Java开发,因此Java中许多实用的特性,在Android中也有体现.动态加载Class,也就是外部jar包,在 ...
最新文章
- python list的复制
- Switchover and Failover说明
- 2017届-应届毕业生-兆芯 GPU architecture design校招在线笔试题
- java获取年的第一天和最后一天_java中如何获取当前年份的第一天和最后一天
- 2017.9.19 禁忌 失败总结
- xilinx sdk查看结构体定义open declaration
- 《自控力》-自控力极限
- [Selenium]通过Selenium实现在当前浏览器窗口点击一个图标之后,弹出另外一个窗口,关闭这个窗口,再回到原来的窗口进行操作...
- webex无法用计算机呼叫,WebEx使用指南.PDF
- git merge fast-forward squash no-ff
- java爬取网页上qq号,邮箱号等
- 基于epoll,socket与protobuf的简单帧同步游戏服务器
- 信号与系统(20)-拉普拉斯变换的性质
- 聚乙烯醇(PVA)/壳聚糖(CTS)/氧化石墨烯(GO)水凝胶吸附和解吸实验(供应PNIPA/膨润土复合/聚乙烯醇/魔芋胶复合/HAP纳米纤维/GelMA复合丝素蛋白(SF)复合水凝胶等)
- 掺铥铝酸钇晶体(Tm:YAP)晶体的资料及其相关产品目录
- 图片太大加载不出来的解决方法
- 微信小程序:好玩的表情包机器人
- linux7中man inittab,RHCE考试Troubleshooting
- 排查内存orJVM内存飙高
- 使用JLink SEGGER_RTT_printf()函数实现打印浮点数