概述

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包的使用相关推荐

  1. linux java jar打包_【Java】Java程序打包成jar包在Linux上运行

    当需要把在Windows上开发的Java程序用在Linux上运行时,就需要吧该Java程序打包成jar包上传到Linux上去运行. 1.Java程序用MyEclipse打包成可运行的jar包 (1)在 ...

  2. Docker安装java环境并部署jar包运行

    Docker安装java环境并部署jar包运行 作为一个前端,了解后端部署jar包也是有必要的,在这里就我学习的,做一个简单的笔记,这里可以结合我的商品的增删改查的java文章一起看. java实现商 ...

  3. 阿里云部署启动java项目全过程(jar包war包)

    hi,大家好,今天给大家分享如何在阿里云上部署我们写好的项目. 在云端部署java项目有两种方式,第一种是以jar包另一种是以war包,首先我们得了解这两个方式得区别. war包:在我们使用javaw ...

  4. java 打war包,jar包

    假定有一个Web应用:C:\myHome myHome/WEB-INF/-- myHome/files/-- myHome/image/-- myHome/src/-- myHome/index.js ...

  5. JDBC之 java - mysql 各个版本 jar包 驱动

    方法一 JDBC之 java - mysql 各个版本 jar包 驱动 : http://central.maven.org/maven2/mysql/mysql-connector-java/ 例如 ...

  6. java调用jar并传参,Java项目导出为jar包+导出第三方jar包+使用命令行调用+传参

    Java项目导出为jar包+导出第三方jar包+使用命令行调用+传参 一.打包 情况1:不需要向程序传参数,并且程序没有使用第三方jar包 Eclipse上导出jar: 然后选择一个java文件作为入 ...

  7. Java项目安全发布--Jar包(class)加解密实践

    一.背景 有项目需要在客户机器上进行本地部署,这就涉及到自家代码的安全性问题.需要保证以下几点: 代码不能被他人"窃取"(保证源码不可见) 不能通过已有项目复制一份系统出来(即使源 ...

  8. java项目(java project)如何导入jar包的解决方案列表

    右键项目-properties-java build path(左侧菜单)-选择libraries 有两种方式,导入jar包实际上就是建立一种链接,并不是copy式的导入 一.导入外部包,add ex ...

  9. android jar 加入图片,Android动态加载外部jar包及jar包中图片等资源文件

    Android动态加载外部jar包及jar包中图片等资源文件 Android应用程序由Java开发,因此Java中许多实用的特性,在Android中也有体现.动态加载Class,也就是外部jar包,在 ...

最新文章

  1. python list的复制
  2. Switchover and Failover说明
  3. 2017届-应届毕业生-兆芯 GPU architecture design校招在线笔试题
  4. java获取年的第一天和最后一天_java中如何获取当前年份的第一天和最后一天
  5. 2017.9.19 禁忌 失败总结
  6. xilinx sdk查看结构体定义open declaration
  7. 《自控力》-自控力极限
  8. [Selenium]通过Selenium实现在当前浏览器窗口点击一个图标之后,弹出另外一个窗口,关闭这个窗口,再回到原来的窗口进行操作...
  9. webex无法用计算机呼叫,WebEx使用指南.PDF
  10. git merge fast-forward squash no-ff
  11. java爬取网页上qq号,邮箱号等
  12. 基于epoll,socket与protobuf的简单帧同步游戏服务器
  13. 信号与系统(20)-拉普拉斯变换的性质
  14. 聚乙烯醇(PVA)/壳聚糖(CTS)/氧化石墨烯(GO)水凝胶吸附和解吸实验(供应PNIPA/膨润土复合/聚乙烯醇/魔芋胶复合/HAP纳米纤维/GelMA复合丝素蛋白(SF)复合水凝胶等)
  15. 掺铥铝酸钇晶体(Tm:YAP)晶体的资料及其相关产品目录
  16. 图片太大加载不出来的解决方法
  17. 微信小程序:好玩的表情包机器人
  18. linux7中man inittab,RHCE考试Troubleshooting
  19. 排查内存orJVM内存飙高
  20. 使用JLink SEGGER_RTT_printf()函数实现打印浮点数

热门文章

  1. mysql DISTINCT去重,返回去重后的所有字段
  2. 2021年R2移动式压力容器充装最新解析及R2移动式压力容器充装考试总结
  3. 电影赏析 001《全民目击》
  4. bugly热更新使用
  5. 虚拟网络适配器的实现
  6. 数字图像处理笔记(一)基础内容
  7. 异步赠书1月书讯:Python/深度学习/贝叶斯/OpenStack/DevOps/Docker
  8. Nim和anti-Nim
  9. 条形码的打印,pdf打印条形码
  10. spring调用切面失效分析(类内调用自身切面方法或其他切面方法失效)