新建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. canvas变换(移动,缩放等)

    代码: 1 /** 2 * Created by Administrator on 2016/1/30. 3 */ 4 function draw (id){ 5 var canvas = docum ...

  2. node包管理工具nvm

    去NVM官网下载NVM压缩包,下载nvm-setup.zip,直接傻瓜式安装 安装成功后运行命令: nvm -v 常用命令: nvm install <version> ## 安装指定版本 ...

  3. C语言学习笔记--C语言中变量的属性关键字

    变量属性关键字的使用语法:property type var_name; 1.auto 关键字 auto关键字是C语言中局部变量的默认的关键字,C编译器默认所有的局部变量都是auto的,它表明了被修饰 ...

  4. 洛谷-铺地毯-NOIP2011提高组复赛

    题目描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯.一共有 n 张地毯,编号从 1 到n .现在将这些地毯按照编号从小到大的顺序平行于 ...

  5. Spring pom配置详解(转)

    转载至http://blog.csdn.net/ithomer/article/details/9332071# 原博主注释的很详细 <project xmlns="http://ma ...

  6. .net开发ActiveX控件

    我估计有些朋友不清楚ActiveX控件,但这篇博客不是来解释这些概念的.如果你对ActiveX的概念不清楚,请参考这里: http://baike.baidu.com/view/28141.htm 这 ...

  7. SpringSecurity02 表单登录、SpringSecurity配置类

    1 功能需求 springSecuriy默认的登录窗口是一个弹出窗口,而且会默认对所有的请求都进行拦截:要求更改登录页面(使用表单登录).排除掉一些请求的拦截 2 编写一个springSecurity ...

  8. 面试题: mysql数据库 已看1 简单的sql练习

    数据库总结--MySQL常见面试题 2015年03月24日 17:56:06 阅读数:7787 1.根据部门号从高到低,工资从低到高列出员工的信息 select * from employee ord ...

  9. Windows使用Github

    首先,你需要执行下面两条命令,作为 git 的基础配置,作用是告诉 git 你是谁,你输入的信息将出现在你创建的提交中. git config --global user.name "你的名 ...

  10. 39、生鲜电商平台-redis缓存在商品中的设计与架构

    说明:Java开源生鲜电商平台-redis缓存在商品中的设计与架构. 1. 各种计数,商品维度计数和用户维度计数 说起电商,肯定离不开商品,而附带商品有各种计数(喜欢数,评论数,鉴定数,浏览数,etc ...