JSON是JavaScript Object Notation的縮寫,是一種輕量級的數據交換形式,是一種XML的替代方案,並且比XML更小,更快並且更易於解析。由於JSON描述對象的時候使用的是JavaScript語法,它是語言和平臺獨立的,而且這些年許多JSON的解析器和類庫被開發出來。在這篇文章中,咱們將會展現7種Java JSON類庫。基本上,咱們將會試着把Java對象轉換JSON格式而且存儲到文件,而且反向操做,讀JSON文件轉換成一個對象。爲了讓文章更有意義,咱們將會測量每一種JSON類庫在不一樣狀況下的處理速度。 java
Jackson庫是一個「旨在爲開發者提供更快,更正確,更輕量級,更符合人性思惟」 的類庫。Jackson爲處理JSON格式提供了三種模型的處理方法。json
一、流式API或者增量解析/產生( incremental parsing/generation):讀寫JSON內容被做爲離散的事件。app
二、樹模型:提供一個可變內存樹表示JSON文檔。maven
三、數據綁定(Data binding):實現JSON與POJO(簡單的Java對象(Plain Old Java Object))的轉換工具
咱們感興趣的是Java對象與JSON的轉換,所以,咱們將集中於第三種處理方法。首先咱們須要下載Jackson。Jackson的核心功能使用三個類 庫,分別是spa
jackson-core-2.3.1, jackson-databind-2.3.1和jackson-annotations- 2.3.1; 三個類庫的下載都來自於Maven倉庫,給出地址:http://repo1.maven.org/maven2/com/fasterxml/jackson/ code
JackSon解析JSON數據的工具類:xml
1 public class JSONUtils { 2 3 private final static ObjectMapper objectMapper = new ObjectMapper(); 4 5 private JSONUtils() { 6 7 } 8 9 public static ObjectMapper getInstance() { 10 11 return objectMapper; 12 } 13 14 /** 15 * javaBean,list,array convert to json string 16 */ 17 public static String obj2json(Object obj) throws Exception { 18 return objectMapper.writeValueAsString(obj); 19 } 20 21 /** 22 * json string convert to javaBean 23 */ 24 public static <T> T json2pojo(String jsonStr, Class<T> clazz) 25 throws Exception { 26 return objectMapper.readValue(jsonStr, clazz); 27 } 28 29 /** 30 * json string convert to map 31 */ 32 public static <T> Map<String, Object> json2map(String jsonStr) 33 throws Exception { 34 return objectMapper.readValue(jsonStr, Map.class); 35 } 36 37 /** 38 * json string convert to map with javaBean 39 */ 40 public static <T> Map<String, T> json2map(String jsonStr, Class<T> clazz) 41 throws Exception { 42 Map<String, Map<String, Object>> map = objectMapper.readValue(jsonStr, 43 new TypeReference<Map<String, T>>() { 44 }); 45 Map<String, T> result = new HashMap<String, T>(); 46 for (Entry<String, Map<String, Object>> entry : map.entrySet()) { 47 result.put(entry.getKey(), map2pojo(entry.getValue(), clazz)); 48 } 49 return result; 50 } 51 52 /** 53 * json array string convert to list with javaBean 54 */ 55 public static <T> List<T> json2list(String jsonArrayStr, Class<T> clazz) 56 throws Exception { 57 List<Map<String, Object>> list = objectMapper.readValue(jsonArrayStr, 58 new TypeReference<List<T>>() { 59 }); 60 List<T> result = new ArrayList<T>(); 61 for (Map<String, Object> map : list) { 62 result.add(map2pojo(map, clazz)); 63 } 64 return result; 65 } 66 67 /** 68 * map convert to javaBean 69 */ 70 public static <T> T map2pojo(Map map, Class<T> clazz) { 71 return objectMapper.convertValue(map, clazz); 72 } 73 }