jackson简单使用案例

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

 1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 2     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 3     <modelVersion>4.0.0</modelVersion>
 4     <groupId>henu.yyq</groupId>
 5     <artifactId>mytest</artifactId>
 6     <version>0.0.1-SNAPSHOT</version>
 7 
 8     <dependencies>
 9         <!-- jakson依赖包 因为jackson-databind依赖core和annotation俩jar包,所以maven会自动导入--> 
10         <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
11         <dependency>
12             <groupId>com.fasterxml.jackson.core</groupId>
13             <artifactId>jackson-databind</artifactId>
14             <version>2.9.4</version>
15         </dependency>
16     </dependencies>
17     
18         <!-- Jre版本号 -->
19     <build>
20         <plugins>
21             <plugin>
22                 <groupId>org.apache.maven.plugins</groupId>
23                 <artifactId>maven-compiler-plugin</artifactId>
24                 <version>3.7.0</version>
25                 <configuration>
26                     <source>1.8</source>
27                     <target>1.8</target>
28                 </configuration>
29             </plugin>
30         </plugins>
31     </build>
32 </project>    

实体类准备

 1 package henu.yyq.jakson;
 2 
 3 import java.util.Date;
 4 
 5 import com.fasterxml.jackson.annotation.JsonFormat;
 6 import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
 7 import com.fasterxml.jackson.annotation.JsonProperty;
 8 
 9 //空值不序列化:ignoreUnknown=true
10 //忽略字段:value={"id", ...}
11 @JsonIgnoreProperties(ignoreUnknown=true, value={"id"})
12 public class Exam {
13     private Integer id;
14 
15     private String subject;
16 
17     @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
18     private Date starttime;
19 
20     //类型转换
21     @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
22     private Date endtime;
23 
24     private String state;
25     
26     //声明别名
27     @JsonProperty("teacherId")
28     private String t_id;
29 
30     public String getT_id() {
31         return t_id;
32     }
33 
34     public void setT_id(String t_id) {
35         this.t_id = t_id;
36     }
37 
38     public Integer getId() {
39         return id;
40     }
41 
42     public void setId(Integer id) {
43         this.id = id;
44     }
45 
46     public String getSubject() {
47         return subject;
48     }
49 
50     public void setSubject(String subject) {
51         this.subject = subject == null ? null : subject.trim();
52     }
53 
54     public Date getStarttime() {
55         return starttime;
56     }
57 
58     public void setStarttime(Date starttime) {
59         this.starttime = starttime;
60     }
61 
62     public Date getEndtime() {
63         return endtime;
64     }
65 
66     public void setEndtime(Date endtime) {
67         this.endtime = endtime;
68     }
69 
70     public String getState() {
71         return state;
72     }
73 
74     public void setState(String state) {
75         this.state = state == null ? null : state.trim();
76     }
77 
78     @Override
79     public String toString() {
80         return "Exam [subject=" + subject + ", starttime=" + starttime + ", state=" + state + "]";
81     }
82 
83 }
 1 package henu.yyq.jakson;
 2 
 3 import java.util.List;
 4 import java.util.Map;
 5 
 6 public class TT {
 7 
 8     private List<Map> lm;
 9 
10     public List<Map> getLm() {
11         return lm;
12     }
13 
14     public void setLm(List<Map> lm) {
15         this.lm = lm;
16     }
17 
18     @Override
19     public String toString() {
20         return "TT [lm=" + lm + "]";
21     }
22     
23 }

工具类以及测试

  1 package henu.yyq.jakson;
  2 
  3 import java.io.IOException;
  4 import java.util.ArrayList;
  5 import java.util.Date;
  6 import java.util.HashMap;
  7 import java.util.List;
  8 import java.util.Map;
  9 
 10 import org.junit.Test;
 11 
 12 import com.fasterxml.jackson.databind.JavaType;
 13 import com.fasterxml.jackson.databind.ObjectMapper;
 14 
 15 /**
 16  * @ClassName: JsonUtil <br/> 
 17  * @Describtion: JSON与Java Bean之间的转换. <br/> 
 18  * @date: 2018年4月17日 下午10:29:39 <br/> 
 19  * @author Beats <br/> 
 20  * @version v1.0
 21  */
 22 public class JsonUtil {
 23 
 24      // 定义ObjectMapper对象,用于数据转换
 25     private static final ObjectMapper mapper = new ObjectMapper();
 26     
 27     /**
 28      * getJSON:(对象转换成JSON). <br/> 
 29      * @param bean
 30      * @return String
 31      */
 32     public static String getJson(Object object) {
 33         try {
 34             return mapper.writeValueAsString(object);
 35         } catch (IOException e) {
 36             e.printStackTrace();
 37         }
 38         return null;
 39     }
 40 
 41     /**
 42      * getBean:(JSON字符串转对象). <br/> 
 43      * @param json
 44      * @param t
 45      * @return T
 46      */
 47     public static <T> T getBean(String json, Class<T> t) {
 48         try {
 49             return mapper.readValue(json, t);
 50         } catch (IOException e) {
 51             e.printStackTrace();
 52         }
 53         return null;
 54     }
 55     
 56     /**
 57      * jsonToObject:(JSON字符串转对象). <br/> 
 58      * @param json
 59      * @param t
 60      * @return T
 61      */
 62     public static <T> List<T> getBeanList(String json, Class<T> beanType) {
 63         try {
 64             //方案一:
 65 //            JavaType javaType = mapper.getTypeFactory().constructCollectionType(List.class, beanType);
 66             //方案二:
 67             JavaType javaType = mapper.getTypeFactory().constructParametricType(List.class, beanType);
 68             return mapper.readValue(json, javaType);
 69             //方案三
 70 //            TypeReference<T> typeReference = new TypeReference<T>() {};
 71 //            return mapper.readValue(json, typeReference);
 72         } catch (IOException e) {
 73             e.printStackTrace();
 74         }
 75         return null;
 76     }
 77     
 78     @Test
 79     public void testGetJson() {
 80         //简单类型
 81         Exam e = new Exam();
 82         e.setId(100);
 83         e.setSubject("English");
 84         e.setState("Created");
 85         e.setStarttime(new Date());
 86         e.setEndtime(new Date());
 87         e.setT_id("1234567890");
 88         
 89         String json = JsonUtil.getJson(e);
 90         System.out.println(json);
 91         
 92         //复杂类型
 93         TT t = new TT();
 94         
 95         List<Map> l = new ArrayList<Map>();
 96         Map m = new HashMap();
 97         m.put("A", "what's your name");
 98         l.add(m);
 99         Map m2 = new HashMap();
100         m2.put("B", "what's your mather");
101         l.add(m2);
102         
103         t.setLm(l);
104         
105         String res = JsonUtil.getJson(t);
106         System.out.println(res);
107     }
108     
109     @Test
110     public void testGetBean() {
111         String json = "{"subject":"English","starttime":"2018-04-17 15:05:01","endtime":"2018-04-17 15:05:01","state":"Created","teacherId":"1234567890"}";
112         Exam e = JsonUtil.getBean(json, Exam.class);
113         System.out.println(e.toString());
114         
115         String json2 = "{"lm":[{"A":"what's your name"},{"B":"what's your mather"}]}";
116         TT t = JsonUtil.getBean(json2, TT.class);
117         System.out.println(t);
118     }
119     
120     @Test
121     public void testGetBeanList() {
122         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"}]";
123         List<Exam> es = JsonUtil.getBeanList(json, Exam.class);
124         System.out.println(es);
125         
126     }
127 }

结果自己试试就知道了

原文地址:https://www.cnblogs.com/webyyq/p/6713060.html