新建Maven项目导入依赖包:jakson

 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>henu.yyq</groupId>
<artifactId>mytest</artifactId>
<version>0.0.1-SNAPSHOT</version> <dependencies>
<!-- jakson依赖包 因为jackson-databind依赖core和annotation俩jar包,所以maven会自动导入-->
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.4</version>
</dependency>
</dependencies> <!-- Jre版本号 -->
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>

实体类准备

 package henu.yyq.jakson;

 import java.util.Date;

 import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty; //空值不序列化:ignoreUnknown=true
//忽略字段:value={"id", ...}
@JsonIgnoreProperties(ignoreUnknown=true, value={"id"})
public class Exam {
private Integer id; private String subject; @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date starttime; //类型转换
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date endtime; private String state; //声明别名
@JsonProperty("teacherId")
private String t_id; public String getT_id() {
return t_id;
} public void setT_id(String t_id) {
this.t_id = t_id;
} public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getSubject() {
return subject;
} public void setSubject(String subject) {
this.subject = subject == null ? null : subject.trim();
} public Date getStarttime() {
return starttime;
} public void setStarttime(Date starttime) {
this.starttime = starttime;
} public Date getEndtime() {
return endtime;
} public void setEndtime(Date endtime) {
this.endtime = endtime;
} public String getState() {
return state;
} public void setState(String state) {
this.state = state == null ? null : state.trim();
} @Override
public String toString() {
return "Exam [subject=" + subject + ", starttime=" + starttime + ", state=" + state + "]";
} }
 package henu.yyq.jakson;

 import java.util.List;
import java.util.Map; public class TT { private List<Map> lm; public List<Map> getLm() {
return lm;
} public void setLm(List<Map> lm) {
this.lm = lm;
} @Override
public String toString() {
return "TT [lm=" + lm + "]";
} }

工具类以及测试

 package henu.yyq.jakson;

 import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map; import org.junit.Test; import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.ObjectMapper; /**
* @ClassName: JsonUtil <br/>
* @Describtion: JSON与Java Bean之间的转换. <br/>
* @date: 2018年4月17日 下午10:29:39 <br/>
* @author Beats <br/>
* @version v1.0
*/
public class JsonUtil { // 定义ObjectMapper对象,用于数据转换
private static final ObjectMapper mapper = new ObjectMapper(); /**
* getJSON:(对象转换成JSON). <br/>
* @param bean
* @return String
*/
public static String getJson(Object object) {
try {
return mapper.writeValueAsString(object);
} catch (IOException e) {
e.printStackTrace();
}
return null;
} /**
* getBean:(JSON字符串转对象). <br/>
* @param json
* @param t
* @return T
*/
public static <T> T getBean(String json, Class<T> t) {
try {
return mapper.readValue(json, t);
} catch (IOException e) {
e.printStackTrace();
}
return null;
} /**
* jsonToObject:(JSON字符串转对象). <br/>
* @param json
* @param t
* @return T
*/
public static <T> List<T> getBeanList(String json, Class<T> beanType) {
try {
//方案一:
// JavaType javaType = mapper.getTypeFactory().constructCollectionType(List.class, beanType);
//方案二:
JavaType javaType = mapper.getTypeFactory().constructParametricType(List.class, beanType);
return mapper.readValue(json, javaType);
//方案三
// TypeReference<T> typeReference = new TypeReference<T>() {};
// return mapper.readValue(json, typeReference);
} catch (IOException e) {
e.printStackTrace();
}
return null;
} @Test
public void testGetJson() {
//简单类型
Exam e = new Exam();
e.setId(100);
e.setSubject("English");
e.setState("Created");
e.setStarttime(new Date());
e.setEndtime(new Date());
e.setT_id("1234567890"); String json = JsonUtil.getJson(e);
System.out.println(json); //复杂类型
TT t = new TT(); List<Map> l = new ArrayList<Map>();
Map m = new HashMap();
m.put("A", "what's your name");
l.add(m);
Map m2 = new HashMap();
m2.put("B", "what's your mather");
l.add(m2); t.setLm(l); String res = JsonUtil.getJson(t);
System.out.println(res);
} @Test
public void testGetBean() {
String json = "{\"subject\":\"English\",\"starttime\":\"2018-04-17 15:05:01\",\"endtime\":\"2018-04-17 15:05:01\",\"state\":\"Created\",\"teacherId\":\"1234567890\"}";
Exam e = JsonUtil.getBean(json, Exam.class);
System.out.println(e.toString()); String json2 = "{\"lm\":[{\"A\":\"what's your name\"},{\"B\":\"what's your mather\"}]}";
TT t = JsonUtil.getBean(json2, TT.class);
System.out.println(t);
} @Test
public void testGetBeanList() {
String json = "[{\"subject\":\"English\",\"starttime\":\"2018-04-17 15:05:01\",\"endtime\":\"2018-04-17 15:05:01\",\"state\":\"Created\",\"teacherId\":\"1234567890\"},{\"subject\":\"English\",\"starttime\":\"2018-04-17 15:05:01\",\"endtime\":\"2018-04-17 15:05:01\",\"state\":\"Created\",\"teacherId\":\"1234567890\"}]";
List<Exam> es = JsonUtil.getBeanList(json, Exam.class);
System.out.println(es); }
}

结果自己试试就知道了

jackson简单使用案例的更多相关文章

  1. 简单登录案例(SharedPreferences存储账户信息)&联网请求图片并下载到SD卡(文件外部存储)

    新人刚学习Android两周,写一个随笔算是对两周学习成果的巩固,不足之处欢迎各位建议和完善. 这次写的是一个简单登录案例,大概功能如下: 注册的账户信息用SharedPreferences存储: 登 ...

  2. MyBatis学习总结(一)简单入门案例

    MyBatis学习总结(一)简单入门案例 主要内容:本文主要通过对数据库中的use表进行增删改查总结mybatis的环境搭建和基本入门使用 一.需要的jar包: 1.核心包 2.依赖包 3.jdbc数 ...

  3. 一个简单的案例带你入门Dubbo分布式框架

    相信有很多小伙伴都知道,dubbo是一个分布式.高性能.透明化的RPC服务框架,提供服务自动注册.自动发现等高效服务治理方案,dubbo的中文文档也是非常全的,中文文档可以参考这里dubbo.io.由 ...

  4. solr简单搜索案例

    solr简单搜索案例 使用Solr实现电商网站中商品信息搜索功能,可以根据关键字搜索商品信息,根据商品分类.价格过滤搜索结果,也可以根据价格进行排序,实现分页. 架构分为: 1. solr服务器 2. ...

  5. springcloud+eureka简单入门案例

    springcloud+eureka简单入门案例 一.服务提供者 直接提供服务,入门案例没有特别要设置的地方,注意下端口,由于要启动多个服务,可能会冲突 配置文件(src/main/resources ...

  6. Python 简单爬虫案例

    Python 简单爬虫案例 import requests url = "https://www.sogou.com/web" # 封装参数 wd = input('enter a ...

  7. arduino中SCoop库的简单应用案例

    转载:https://www.csdn.net/gather_27/MtTaggzsMDExMS1ibG9n.html arduino中SCoop库的简单应用案例首先这篇文章来在视频https://v ...

  8. ReentrantReadWriteLock读写锁简单原理案例证明

    ReentrantReadWriteLock存在原因? 我们知道List的实现类ArrayList,LinkedList都是非线程安全的,Vector类通过用synchronized修饰方法保证了Li ...

  9. redux 的简单实用案例

    redux 的简单实用案例 整体思想与结构 创建一个Action 创建一个Reducer 创建Store 在App组件开始使用 整体思想与结构 文件目录如下: 构建 action,通过创建一个函数,然 ...

随机推荐

  1. Java应用中使用ShutdownHook友好地清理现场、退出JVM的2种方法

    Runtime.getRuntime().addShutdownHook(shutdownHook);    这个方法的含义说明:        这个方法的意思就是在jvm中增加一个关闭的钩子,当jv ...

  2. java基础知识(10)---包

    包:定义包用package关键字. 1:对类文件进行分类管理. 2:给类文件提供多层名称空间. 如果生成的包不在当前目录下,需要最好执行classpath,将包所在父目录定义到classpath变量中 ...

  3. Tiny4412学习杂记

    1.Android 挂载NFS 使用 busybox mount 来替代mount命令 2.修改Uboot中fastboot最大buff  使用U-boot烧写Android5.0的时候出现 remo ...

  4. VC 绘图,使用双缓冲技术实现

    VC 绘图,使用双缓冲技术实现 - Cloud-Datacenter-Renewable Energy-Big Data-Model - 博客频道 - CSDN.NET VC 绘图,使用双缓冲技术实现 ...

  5. Spring的@value注解

    Spring 3支持@value注解的方式获取properties文件中的配置值,大简化了读取配置文件的代码. 1.在applicationContext.xml文件中配置properties文件 & ...

  6. 安装yum在ubnutu上

    安装yum在ubnutu上1:首先检测是否安装了build-essential程序包 apt-get install build-essential2.安装yumapt-get install yum ...

  7. kafka学习之相关命令

    1 分别启动zoo和kafka ./zkServer.sh start 然后需要使用./zkServer.sh status查看状态,会发现一个奇怪得问题,即使start启动的时候表示启动成功,但是s ...

  8. npm ERR! Unexpected token in JSON at position 0 while parsing near '<HTML> 解决办法

    npm ERR! Unexpected token in JSON at position 0 while parsing near '<HTML> npm ERR! <!--/// ...

  9. EIP权限工作流平台总结-2前端框架

      1.预览地址:www.eipflow.com (1) 权限工作流:www.demo.eipflow.com/Account/Login (2) 基础权限版:www.auth.eipflow.com ...

  10. virtio使用

    Windows 参考文档 下载virtio驱动 下载地址 如果是在Fedora或CentOS环境下,可使用yum的方式下载驱动 [root@centos centos]#wget https://fe ...