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

来源:互联网 发布:个人简介网页制作源码 编辑:程序博客网 时间:2024/06/04 19:00

作者:kenve 出处: http://www.cnblogs.com/xiezhenwei
JSON是JavaScript Object Notation的缩写,是一种轻量级的数据交换形式,是一种XML的替代方案,而且比XML更小,更快而且更易于解析。因为JSON描述对象的时候使用的是JavaScript语法,它是语言和平台独立的,并且这些年许多JSON的解析器和类库被开发出来。在这篇文章中,我们将会展示7种Java JSON类库。基本上,我们将会试着把Java对象转换JSON格式并且存储到文件,并且反向操作,读JSON文件转换成一个对象。为了让文章更有意义,我们将会测量每一种JSON类库在不同情况下的处理速度。

Jackson库是一个“旨在为开发者提供更快,更正确,更轻量级,更符合人性思维” 的类库。Jackson为处理JSON格式提供了三种模型的处理方法。

1、流式API或者增量解析/产生( incremental parsing/generation):读写JSON内容被作为离散的事件。2、树模型:提供一个可变内存树表示JSON文档。

3、数据绑定(Data binding):实现JSON与POJO(简单的Java对象(Plain Old Java Object))的转换

我们感兴趣的是Java对象与JSON的转换,因此,我们将集中于第三种处理方法。首先我们需要下载Jackson。Jackson的核心功能使用三个类 库,分别是

jackson-core-2.3.1, jackson-databind-2.3.1和jackson-annotations- 2.3.1; 三个类库的下载都来自于Maven仓库,给出地址:http://repo1.maven.org/maven2/com/fasterxml/jackson/

JackSon解析JSON数据的工具类:

public class JSONUtils {    private final static ObjectMapper objectMapper = new ObjectMapper();     private JSONUtils() {     }     public static ObjectMapper getInstance() {         return objectMapper;     }     /**      * javaBean,list,array convert to json string      */     public static String obj2json(Object obj) throws Exception {         return objectMapper.writeValueAsString(obj);     }     /**      * json string convert to javaBean      */     public static <T> T json2pojo(String jsonStr, Class<T> clazz)             throws Exception {        return objectMapper.readValue(jsonStr, clazz);     }     /**      * json string convert to map      */     public static <T> Map<String, Object> json2map(String jsonStr)             throws Exception {         return objectMapper.readValue(jsonStr, Map.class);     }     /**      * json string convert to map with javaBean      */     public static <T> Map<String, T> json2map(String jsonStr, Class<T> clazz)             throws Exception {         Map<String, Map<String, Object>> map = objectMapper.readValue(jsonStr,                 new TypeReference<Map<String, T>>() {                 });         Map<String, T> result = new HashMap<String, T>();         for (Entry<String, Map<String, Object>> entry : map.entrySet()) {             result.put(entry.getKey(), map2pojo(entry.getValue(), clazz));         }         return result;     }     /**      * json array string convert to list with javaBean      */     public static <T> List<T> json2list(String jsonArrayStr, Class<T> clazz)             throws Exception {         List<Map<String, Object>> list = objectMapper.readValue(jsonArrayStr,                 new TypeReference<List<T>>() {                 });         List<T> result = new ArrayList<T>();         for (Map<String, Object> map : list) {             result.add(map2pojo(map, clazz));         }         return result;     }     /**      * map convert to javaBean      */     public static <T> T map2pojo(Map map, Class<T> clazz) {         return objectMapper.convertValue(map, clazz);     } }

作者:kenve 出处: http://www.cnblogs.com/xiezhenwei 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。如果觉得还有帮助的话,可以点一下右下角的【推荐】,希望能够持续的为大家带来好的技术文章!想跟我一起进步么?那就【关注】我吧