jackson使用

Jackson是java中众多json处理工具的一个,比起常见的Json-lib,Gson要快一些。

jsckson官方地址

 

http://jackson.codehaus.org/

 里面可以下载Jackson的Jar包  注意jackson依赖:Apache的commons-loggin

 JSON的三种处理方式 

Jackson提供了三种可选的JSON处理方法(一种方式及其两个变型):

  • 流式 API(也称为"增量分析/生成") 读取和写入 JSON 内容作为离散事件。

    • org.codehaus.jackson.JsonParser 读, org.codehaus.jackson.JsonGenerator 写。

    • StAX API 的激励。

  • 树模型 :提供一个 JSON 文档可变内存树的表示形式。

    • org.codehaus.jackson.map.ObjectMapper 生成树 ;树组成 JsonNode 节点集。

    • 树模型类似于 XML DOM。
  • 数据绑定: JSON和POJO相互转换,基于属性访问器规约或注解。

    • 有 两种变体: 简单 和 完整 的数据绑定:

    • 简单数据绑定: 是指从Java Map、List、String、Numbers、Boolean和空值进行转换

    • 完整数据绑定 :是指从任何 Java bean 类型 (及上文所述的"简单"类型) 进行转换

    • org.codehaus.jackson.map.ObjectMapper 对两个变种,进行编组(marshalling )处理 (写入 JSON) 和反编组(unmarshalling ,读 JSON)。

    • JAXB激励下的基于注释的 (代码优先)变种。

从使用的角度来看,总结这些3 种方法的用法如下:

  • 流 API: 性能最佳的方式 (最低开销、 速度最快的读/写; 其它二者基于它实现)。

  • 数据绑定 :使用最方便的方式。

  • 树模型: 最灵活的方式


一、数据绑定方式(常用且简单)

1.bean --> json

 

public static String beanToJson(Object obj) throws IOException {   
    // 这里异常都未进行处理,而且流的关闭也不规范。开发中请勿这样写
        ObjectMapper mapper = new  ObjectMapper();  
        StringWriter writer = new StringWriter();   
        JsonGenerator gen = new JsonFactory().createJsonGenerator(writer);   
        mapper.writeValue(gen, obj);   
        gen.close();   
        String json = writer.toString();   
        writer.close();   
        return json;   
    }  

 2.json --> bean

 

        /**
	 * JSON转换为对象
	 * @param json
	 * @param cls
	 * @return
	 */
	public static Object json2Obj(String json,Class<?> cls){
		ObjectMapper mapper = new ObjectMapper();
		try {
    		return mapper.readValue(json, cls);
		}  catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}

 

你可能感兴趣的:(Jackson)