新建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. 通过设置swift中container的ACL提供匿名访问及用户授权读取服务

    在上层使用swift提供的云存储服务的过程中,提出了无需验证的使用需求. 在参考了:http://my.oschina.net/alanlqc/blog/160196(curl命令操作) 官方文档: ...

  2. C/C++的区别

    C和C++的关系:就像是win98跟winXP的关系.C++是在C的基础上增加了新的理论,玩出了新的花样.所以叫C加加. C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设 ...

  3. HBase 二级索引与Coprocessor协处理器

    Coprocessor简介 (1)实现目的 HBase无法轻易建立“二级索引”: 执行求和.计数.排序等操作比较困难,必须通过MapReduce/Spark实现,对于简单的统计或聚合计算时,可能会因为 ...

  4. XML解析代码课堂讲解实例

    //获取所有的子元素,不包括回车 package com.dom4jDemo; import java.io.File; import java.util.List; import org.dom4j ...

  5. C++中const型数据的小结

    由于与对象又管的const型数据种类较多,形式又有些相似,往往难记,容易混淆,因此总结一下相关用法,具体用法可查看下方链接 C++中对象的常引用 C++中指向对象的常指针和指向常对象的指针 C++中的 ...

  6. 拦截导弹 (NYOJ—79) 最长字串问题 (NYOJ—17)

    这是到动态规划的题目,属于有顺序的0 1 背包问题: 代码: #include<stdio.h> #include<string.h> ][]; //d[i][j] ]; in ...

  7. HTML5+JavaScript动画基础 完整版 中文pdf扫描版

    <HTML5+JavaScript动画基础>包括了基础知识.基础动画.高级动画.3D动画和其他技术5大部分,分别介绍了动画的基本概念.动画的JavaScript基础.动画中的三角学.渲染技 ...

  8. The Little Prince

    Chapter 1 That is why, at the age of six, I gave up what might have been a magnificant career as a p ...

  9. smix到底是个啥?Perl的正则表达式匹配模式

    最近在研究一个perl项目,临时学习了一下perl语法,强行看项目源码.因为总是见到各种正则表达式后面接smxi之类,虽然知道是匹配模式,但脑子里毫无概念.所以特地去学习了一下. 以上为背景. Per ...

  10. 【数据库】SQL注入攻击

    背景: 机房收费系统验收的时候,师父提到SQL注入攻击.自己以前看过类似的博客大概知道一些这方面的事情,于是自己动手查了查. 定义: 所谓SQL注入,通过SQL命令插入到Web表单提交或者输入域名或页 ...