当前位置: 代码迷 >> Web前端 >> jackson应用
  详细解决方案

jackson应用

热度:117   发布时间:2013-04-12 18:33:12.0
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;
		}
	}

?

  相关解决方案