新建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. hashCode之二--Java:重写equals()和hashCode()

    以下内容总结自<Effective Java>. 1.何时需要重写equals() 当一个类有自己特有的“逻辑相等”概念(不同于对象身份的概念). 2.设计equals() [1]使用in ...

  2. 如何在Windows平台使用VS搭建C++/Lua的开发环境

    转自:http://ju.outofmemory.cn/entry/95358 本文主要介绍如何在Windows平台利用VS搭建C++/Lua开发环境.这里的“C++/Lua开发环境”主要指的是C++ ...

  3. centos6.5安装tomcat7.0教程(二)

    阅读之前对基本命不熟悉的话, 可以先安装另一文章: http://www.cnblogs.com/duenboa/articles/6665159.html把基本的命令记一下.后面的文章就不重复演示了 ...

  4. 开启struts2自带的开发模式常量

    在以前的开发中,当修改一些配置时总是不能及时地更新到服务器,我们总会重新部署或重启来更新改变的内容,在struts2中可以通过一个常量来达到此目的.即在struts.xml中的<struts&g ...

  5. centos7安装与配置ansible

    此次测试总共有三台机,分别如下: ansible服务器:10.0.0.20 client01:10.0.0.21 client02:10.0.0.22 一.安装ansible 1. python版本需 ...

  6. Socket对象以及异常

    1  socket构造器: public Socket() 创建一个Socket套接字 public Socket(InetAddress address,int port) 创建一个指定IP和端口的 ...

  7. 第2天视频 08_androidHelloworld

    为什么应用的包名要用公司域名倒写呢?如何区分不同的安卓应用?高版本的应用装了之后会把低版本的应用覆盖掉.如果是不同的应用跟其他应用没关系只要装上去就可以了.区别不同的应用用的比较关键的东西是一个是应用 ...

  8. SQL标量值函数:小写金额转大写

    我们日常开发业务系统中,作为统计报表中,特别是财务报表,显示中文金额经常遇到. 转换大小写的方法有很多,以下是从数据库函数方面解决这一问题. 效果如图: 调用:SELECT dbo.[Fn_Conve ...

  9. 1.1 xss原理分析与剖析(2)

    0×01 反射型XSS: 反射XSS是XSS分类中最多的,他们原理是下面这样: Hacker——发现存在反射XSS的URL——根据输出点的环境构造XSS代码——进行编码.缩短(可有可无,是为了增加迷惑 ...

  10. bootstrap常用部件下载

    http://shapebootstrap.net/item/1524915-adminlte-dashboard-and-control-panel/live-demo