`
supben
  • 浏览: 329175 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

jackson 完美用法

 
阅读更多
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.codehaus.jackson.JsonFactory;
import org.codehaus.jackson.JsonGenerator;
import org.codehaus.jackson.JsonParser;
import org.codehaus.jackson.map.DeserializationConfig.Feature;
import org.codehaus.jackson.map.MappingJsonFactory;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.type.JavaType;

public class JsonUtils {

	public static <K, V> String toJson(Map<K, V> obj) {
		String jsonString = "";
		try {
			if (obj == null) {
				return "";
			}
			StringWriter sw = new StringWriter();
			JsonGenerator gen = new JsonFactory().createJsonGenerator(sw);
			ObjectMapper mapper = new ObjectMapper();
			mapper.writeValue(gen, obj);
			jsonString = sw.toString();
			sw.close();
		} catch (Exception ex) {
			ex.printStackTrace();
			return "";
		}

		return jsonString;
	}

	@SuppressWarnings("unchecked")
	public static Map<String, Object> toMap(String json) {
		Map<String, Object> result = new HashMap<String, Object>();
		try {
			if (json == null || json.equals("")) {
				return null;
			}

			ObjectMapper objectMapper = new ObjectMapper();
			result = objectMapper.readValue(json, Map.class);
			if (result == null) {
				return new HashMap<String, Object>();
			}
		} catch (Exception ex) {
			ex.printStackTrace();
		}

		return result;
	}

	public static String toJson(Object object) {
		String json = "";
		try {
			if (object == null) {
				return "";
			}
			StringWriter sw = new StringWriter();
			JsonGenerator gen = new JsonFactory().createJsonGenerator(sw);
			ObjectMapper mapper = new ObjectMapper();

			mapper.writeValue(gen, object);

			json = sw.toString();
			sw.close();
		} catch (Exception ex) {
			ex.printStackTrace();
			json = "";
		}
		return json;
	}

	public static <T> T toObject(String json, Class<T> clazz) {
		T obj = null;
		try {
			if (json == null || json.equals("")) {
				return null;
			}
			JsonFactory jsonFactory = new MappingJsonFactory();
			JsonParser jsonParser = jsonFactory.createJsonParser(json);
			ObjectMapper mapper = new ObjectMapper();
			mapper.getDeserializationConfig().set(Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
			obj = mapper.readValue(jsonParser, clazz);

		} catch (Exception ex) {
			ex.printStackTrace();
			obj = null;
		}
		return obj;

	}

	public static <T> List<T> toList(String json, Class<T> clazz) {
		if (json == null || json.equals("")) {
			return null;
		}
		ObjectMapper mapper = new ObjectMapper();
		mapper.getDeserializationConfig().set(Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
		List<T> list = new ArrayList<T>();
		try {
			JavaType type = mapper.getTypeFactory().constructParametricType(List.class, clazz);
			list = mapper.readValue(json, type);
			return list;
		} catch (Exception e) {
			e.printStackTrace();
		}

		return list;
	}
}

 

0
1
分享到:
评论

相关推荐

    jackson经典电动力学部分习题答案

    然而,Jackson的野心在于他几乎涵盖了经典电磁理论的大部分内容,除了一些明显的遗漏(如共形映射方法)外,其广度和深度令人印象深刻,甚至可以比肩托马斯·阿奎那的博学。 作为参考书,Jackson的著作无疑是出色的...

    QQ抖一抖java完美源码

    Struts的ActionForm类用于接收和验证用户输入,而DispatcherServlet则负责调度请求到相应的处理方法。 此外,"上传组件"通常指的是能够处理文件上传功能的第三方库,如Apache的Commons FileUpload或PrimeFaces的...

    Android高仿微信朋友圈完美布局.zip

    9. **JSON解析**:如果数据是从服务器获取的,需要使用JSON解析库,如Gson或Jackson,将接收到的JSON字符串转换为Java对象。 10. **权限管理**:考虑到朋友圈可能涉及用户隐私,需要正确处理读取和写入存储权限,...

    仿大众点评在布局中完美显示两个listview

    同时,对数据加载和解析进行优化,如使用Gson或Jackson库进行JSON解析,减少CPU和内存的消耗。 7. **适配不同设备和屏幕尺寸**:考虑到Android设备的多样性,确保在各种屏幕尺寸和分辨率下,两个ListView都能正确...

    Android 完美高仿的微信源码.rar

    5. **JSON解析**:网络请求返回的数据通常是JSON格式,源码会展示如何使用Gson、Jackson或org.json库来解析这些数据。 6. **异步处理**:为了保证UI的流畅性,大部分网络请求和耗时操作会在AsyncTask或者...

    Mvp+Rxjava2+Retrofit2完美封装

    3. **RxJava2的使用**:通过Retrofit2的Observable返回结果,结合RxJava2的操作符进行数据处理,如错误处理、缓存策略、订阅和取消订阅等。 4. **Presenter的封装**:处理业务逻辑,通过RxJava2将网络请求的结果传递...

    json使用的全部jar包

    JSON是存储和交换文本数据的完美方式,特别是在Web服务和服务器端脚本中广泛应用。在Java中,为了处理JSON数据,我们需要对应的库支持,这就是.jar包的作用。 "json使用的全部jar包"指的是在进行Java项目开发时,...

    Highcharts AJAX后台JAVA JSON 曲线报表完美可运行例子 不包含官方JS 自己下载

    在这个"Highcharts AJAX后台JAVA JSON 曲线报表完美可运行例子"中,我们将探讨如何结合Java后端和JSON数据格式,通过AJAX技术在网页上展示动态曲线报表。 首先,`index_lineAjax.htm`是前端HTML文件,它包含了...

    Struts2+JSON完美是用

    本文将深入探讨这两个技术如何协同工作,以及它们的优势和具体实现方法。 首先,让我们理解这两个核心概念: 1. **Struts2**:Apache Struts2是一个开源的MVC(Model-View-Controller)框架,用于构建Java Web应用...

    Json类自动生成器源码(完美)

    3. 注解支持:生成的Java类可能会包含一些注解,如`@JsonProperty`,以帮助JSON库如Jackson或Gson更好地进行序列化和反序列化。 4. 文件输出:生成的Java源代码会被保存到指定的目录,供项目编译使用。 5. 用户界面...

    android应用源码完美模仿zaker风景页面的效果.zip

    - 获取到的网络数据通常以JSON格式返回,项目中可能使用了Gson或Jackson库进行JSON数据的解析。 10. **权限管理**: - 如果应用需要访问网络,需要在AndroidManifest.xml中声明INTERNET权限。对于Android 6.0及...

    SSM整合 完美支持RESTful(Jsp和客户端 android ios ).docx

    它提倡使用HTTP协议中的标准方法来完成对资源的操作。 - URI(Uniform Resource Identifier)用于唯一标识一个资源,如图片、文字或视频等。 - HTTP的四种动词分别对应四种基本操作: - GET:获取资源,通常用于...

    swagger所需jar包大全

    8. **jackson**系列(如jackson-databind、jackson-annotations、jackson-core): Jackson是Java中常用的JSON序列化和反序列化库,Springfox和Swagger都需要它来处理JSON数据。 9. **javax.servlet**相关jar: 这些...

    RxSample:RxJava + Retrofit完美封装原始码

    6. **数据模型(Data Models)**: 对接收到的JSON数据进行解析,通常使用Gson或Jackson库。 通过以上组件的组合,"RxSample"项目展示了如何在实际应用中有效利用RxJava和Retrofit,实现一个功能完备、易于维护的...

    RxJava + retrofit2.0 +okhttp + json+ greendao+ androidstudio

    在Android中,我们通常使用Gson或Jackson库将JSON字符串转化为Java对象,反之亦然。 **GreenDao** 是一个针对Android优化的对象关系映射(ORM)框架,它可以将数据库操作转化为对Java对象的操作。通过GreenDao,...

    Windows ISO Downloader.zip_PowerBuilder_This Is It_WINSOCK

    【Windows ISO Downloader】 Windows ISO Downloader是一款实用工具,它专为那些希望高效、便捷地下载官方Windows操作系统镜像文件的用户设计...不过,具体如何操作和优化,需要进一步了解软件的详细功能和使用方法。

    json解析所需夹包

    5. **处理复杂JSON结构**:JSON可以包含嵌套的对象和数组,对于复杂的结构,可以使用递归或递归方法进行解析。 6. **类型转换**:在Java中,从JSON字符串转换到特定类型的Java对象时,需要进行类型转换。例如,从...

    klaxon,用于kotlin的json解析器.zip

    下面我们将详细探讨Klaxon的特性、使用方法以及它在实际开发中的应用。 1. **Klaxon的设计理念**: Klaxon的设计目标是尽可能地与Kotlin语法保持一致,提供流畅的API,同时保持性能高效。它利用了Kotlin的高阶函数...

    Putting_Java_to_REST.rar_java rest_rest

    除了JAX-RS,还有其他的Java REST框架,如Spring Boot的`@RestController`和`@RequestMapping`,它们提供了更全面的MVC功能,与Spring生态完美融合,适用于大型企业级应用。 在部署REST服务时,可以选择Tomcat、...

    retrofit2-reactor-adapter,反应堆呼叫适配器项目。工厂实施改造2。.zip

    本文将深入探讨这个开源项目的核心原理和使用方法。 首先,我们要理解Retrofit2的基本概念。Retrofit是一个由Square公司开发的类型安全的HTTP客户端,它允许我们通过简单的接口定义来创建网络请求。借助Gson、...

Global site tag (gtag.js) - Google Analytics