Java 的 JSON 开源类库之JackSon工具类--JSONUtils

   JSONJavaScript Object Notation的缩写,是一种轻量级的数据交换形式,是一种XML的替代方案,并且比XML更小,更快并且更易于解析。由于JSON描述对象的时候使用的是JavaScript语法,它是语言和平台独立的,而且这些年许多JSON的解析器和类库被开发出来。在这篇文章中,咱们将会展现7Java 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 }