新建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 }
結果自己試試就知道了