新建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代码throws异常

    总结:抛出异常 package com.ds; //异常捕获 public class fdsg { private static void throwException() { try { Stri ...

  2. mysqladmin命令用法

    mysqladmin 工具的使用格式: mysqladmin [option] command [command option] command ...... option 选项: -c  numbe ...

  3. bzoj4545

    lct+SAM bzoj4516+bzoj2555 这道题唯一的用处就是教会了我真正的广义SAM dfs时保留当前节点在后缀自动机中的位置,每个点接着父亲建 lct动态维护right集合大小,用lct ...

  4. Mybaits整合Spring自动扫描 接口,Mybaits配置文件.xml文件和Dao实体类

    1.转自:https://blog.csdn.net/u013802160/article/details/51815077 <?xml version="1.0" enco ...

  5. 用C语言实现一个公用库函数void * memmove(void *dest,const void *src,size_t n)

    用C语言实现一个公用库函数void * memmove(void *dest,const void *src,size_t n). 该函数的功能是拷贝src所指的内存内容前n个字节到dest所指的地址 ...

  6. mysql--二进制日志(bin-log)

    一.设置二进制日志 进制日志记录了所有的DDL和DML,但不包括各种查询.通过二进制日志,可以实现什么效果呢?二进制日志文件可以[实现灾难数据恢复],另外可以应用到[mysql复制数据同步].二进制日 ...

  7. 24、嵌合体序列Chimeras

    转载:http://www.cnblogs.com/xudongliang/p/6497465.html 嵌合体序列:由来自两条或者多条模板链的序列组成,示意图如下: 在PCR反应中,在延伸阶段,由于 ...

  8. 积累遇到过的linux终端操作指令

    mkdir mkdir命令是常用的命令,用来建立空目录,它还有2个常用参数: -m, --mode=模式 设定权限<模式> (类似 chmod) -p, --parents 需要时创建上层 ...

  9. 7. IIS短文件/文件夹漏洞(汇总整理)

    漏洞的成因与分析: 1)利用“~”字符猜解暴露短文件/文件夹名. 2).Net Framework的拒绝服务攻击. 现在看大部分的分析讨论都是第一个的.第二个比较少.这里简单复述一下其他研究人员的分析 ...

  10. hdu1088

    #include <stdio.h> #include <string.h> int main() { char s[10000]; int len; int cnt = 0; ...