`

[项目实战]Jackson 框架之java对象和json数据转换实现

阅读更多
简介:
Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将jsonxml转换成Java对象。

官方wiki:http://wiki.fasterxml.com/JacksonInFiveMinutes

官方文档:http://wiki.fasterxml.com/JacksonDocumentation

github:https://github.com/FasterXML/jackson

 

 

一、准备工作
jackson-databind 下载地址:
http://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-databind/
注意:使用此功能需要依赖以下jar文件
	jackson-core jackson-annotations
	github:
https://github.com/FasterXML/jackson-annotations

下载地址:http://repo1.maven.org/maven2/com/fasterxml/jackson/core/

二、实例
1java对象转JSON
/***
     * json转clazz类(不含类中属性数据验证)
     */
    public static Object jsonToObject(String jsonString, Class clazz){
		ObjectMapper mapper = new ObjectMapper();
		try {
		    return mapper.readValue(jsonString, clazz);
		}catch (Exception e) {
		    // TODO Auto-generated catch block
		}
    }
 2jsonjava对象
	json结构:
实现方法:
    /***
     * json转clazz类(不含类中属性数据验证)
     */
    public static Object jsonToObject(String jsonString, Class clazz){
		ObjectMapper mapper = new ObjectMapper();
		try {
		    return mapper.readValue(jsonString, clazz);
		}catch (Exception e) {
		    // TODO Auto-generated catch block
		}
    }
 
3java对象转xml(依赖于stax2-api.jar)
XmlMapper xml = new XmlMapper();
StringWriter sw = new StringWriter();
xml.writeValue(sw, bean);
 
4json中取属性值
    /**
     * 实现将包含单一对象和其他集合的json串中的单一对象转换为对象
     * @param data :json字符串
     * @param nodeName :预获取的节点名称
     * @param cls:节点对应转换的对象
     * @return
     */
    public static Object parseJsonToObject(String data, String nodeName, Class<?> cls) {
		// 用来展现解析Json得到的值
		Object object = null;
		ObjectMapper mapper = new ObjectMapper();
		try {
		    JsonNode rootNode = mapper.readTree(data); // 读取Json
		    // rootNode.path("xx")返回的还是一个JsonNode对象,调用该JsonNode的相应方法,得到键对应的值
		    JsonNode strs = rootNode.path(nodeName);
		    // JsonNode strs1 = rootNode.get(nodeName);
		    if (!"".equals(strs)) {
		    	object = mapper.readValue(strs.toString(), cls);
		    }
		} catch (Exception e) {
		    
		}
		return object;
    }


    /**
     * 实现获取json串中预获取的节点部分
     * @param data:json字符串
     * @param nodeName:预获取的节点名称
     * @return
     */
    public static String parseJson(String data, String nodeName) {
		// 用来展现解析Json得到的值
		StringBuffer buf = new StringBuffer();
		ObjectMapper mapper = new ObjectMapper();
		JsonNode rootNode;
		try {
		    rootNode = mapper.readTree(data);
		    // 读取Json
		    // rootNode.path("xx")返回的还是一个JsonNode对象,调用该JsonNode的相应方法,得到键对应的值
		    String strs = "";
		    if(rootNode.path(nodeName).getClass()==ObjectNode.class){
			    strs = (rootNode.path(nodeName)==null ? "" :rootNode.path(nodeName)).toString();
		    }else{
		    	strs = rootNode.path(nodeName).asText();// JsonNode strs1 =rootNode.get(nodeName);
		    }
		    buf.append(strs);
		} catch (Exception e) {
		    e.printStackTrace();
		}
		return buf.toString();
    }
 
5jsonList
    /**
     * json转List
     * @param data:json数据
     * @param nodeName:预获取的节点名称
     * @param clazz:节点对应转换的对象
     * @return
     */
    public static <T> List<T> parseJsonToList(String data, String nodeName, Class<?> clazz) {
		List<T> list = null;
		TypeFactory t = TypeFactory.defaultInstance();
		// 指定容器结构和类型(这里是ArrayList和clazz)
		ObjectMapper mapper = new ObjectMapper();
		JsonNode rootNode;
		try {
		    rootNode = mapper.readTree(data);// 读取Json
		    // rootNode.path("xx")返回的还是一个JsonNode对象,调用该JsonNode的相应方法,得到键对应的值
		    if (null != rootNode.get(nodeName)) {
				JsonNode strs = rootNode.path(nodeName);
				// JsonNode strs1 = // rootNode.get(nodeName);
				list = mapper.readValue(strs.toString(),t.constructCollectionType(ArrayList.class, clazz));
		    }
		    // 如果T确定的情况下可以使用下面的方法:
		    // List<T> list = mapper.readValue(jsonVal, new TypeReference<List<T>>() {});
		} catch (IOException e) {
		}
		return list;
    }
 
三、小结
	1.json中的key必须与与java对象中的field属性对应。
	2.Date是以long类型进行输出的。
  • 大小: 38.3 KB
分享到:
评论

相关推荐

    Jackson 框架 json 到 复杂 list 的转换

    Jackson框架是Java中广泛使用的JSON处理库,由FasterXML公司开发并维护。它提供了高效、灵活的JSON序列化和反序列化功能,使得在Java对象与JSON数据之间进行转换变得简单。这篇博客"Jackson 框架 json 到 复杂 list ...

    JSON入门实战 (JAVA版)

    2. 序列化:将Java对象转换为JSON字符串的过程,可以使用Gson或Jackson的`toJson()`方法。 五、JSON Schema JSON Schema是一种JSON格式的规范,用于定义JSON数据的结构和限制,有助于验证JSON数据是否符合规范。 ...

    JSON-lib框架,转换JSON、XML不再困难

    5. **XML与JSON转换**:使用`JSONObject.fromXML()`和`JSONObject.toXML()`方法实现XML与JSON之间的转换。 ### JSON-lib的优缺点 优点: - 易于理解和使用,API简洁直观。 - 支持多种数据结构的转换,包括XML。 - ...

    Android高级应用源码-android使用JSON进行网络数据交换(服务端、客户端)的实现.zip

    总的来说,这个项目提供了关于如何在Android应用中使用JSON进行网络数据交换的实战案例,涵盖了客户端和服务端的实现。通过学习和分析这些源码,开发者可以深入理解网络通信、JSON解析、异常处理以及后台线程的使用...

    qq项目,java源代码

    Java提供DOM、SAX和Jackson等库来解析和生成这些格式的数据。 8. **设计模式**:为了实现良好的代码结构和可维护性,项目中可能会应用到各种设计模式,如单例模式(管理QQ登录状态)、工厂模式(创建不同类型的聊天...

    SSM 框架 webSocket的实战

    它们可以帮助我们将Java对象转换为JSON字符串,方便在WebSocket通信中传递复杂数据结构。 总的来说,这个实战教程将引导开发者在SSM项目中集成WebSocket,实现高效、实时的数据交换。通过学习和实践,开发者可以...

    Java京东抢茅台最新直接运行含源码

    这个项目利用了Java的强大功能和灵活性,结合网络请求、数据解析以及定时任务等技术,实现了对特定商品(如茅台酒)的实时监控和快速下单操作。下面将详细解释这个项目中的关键知识点: 1. **Java基础**:项目的...

    Java开发实战1200例

    4. **集合框架**:Java集合框架包括ArrayList、LinkedList、HashSet、HashMap等,是存储和操作对象的主要工具。书中的例子会教你如何选择合适的集合类型,以及如何使用迭代器、泛型、并发集合等高级特性。 5. **IO...

    Java开发实战1200例(第2卷).(配书光盘)

    12. **XML和JSON解析**:数据交换格式的学习,如DOM、SAX解析XML,以及Gson、Jackson库处理JSON。 13. **Spring框架**:作为Java企业级应用的主流框架,Spring的依赖注入、AOP、MVC等核心概念将在实例中得到展现。 ...

    Android经典项目开发实战_源代码

    - JSON解析:Gson、Jackson或org.json库用于将JSON数据转换为Java对象。 6. **异步处理**: - AsyncTask:执行后台任务并更新UI的简单方式,但已不推荐在新版本中使用。 - IntentService:在后台执行单一任务,...

    关于java知识结构图

    18. **JSON和XML处理**:Java提供了如Jackson、Gson库处理JSON,JAXB、DOM、SAX处理XML,这些在数据交换和序列化中十分常见。 19. **JVM(Java虚拟机)**:JVM是Java运行的基石,负责解析字节码、垃圾回收和性能...

    Java Web数据传递与存储过程在实验实训平台中的应用分析.zip

    对于复杂的对象传输,可以使用序列化技术,如JSON库Jackson或Gson进行对象到JSON字符串的转换。 接下来,我们讨论存储过程。存储过程是预编译在数据库中的SQL语句集合,它可以提高查询效率,减少网络传输,增强安全...

    Javaweb仿摩拜

    可以使用如Gson或Jackson库将Java对象转换为JSON,便于前后端数据传递。 6. **Ajax异步通信**:为了让用户体验更流畅,项目可能会使用Ajax(Asynchronous JavaScript and XML)进行局部页面更新,而不是每次都刷新...

    基于android的天气预报实现

    同时,JSON是常见的数据交换格式,开发者需要熟悉JSON解析,可以使用Gson或Jackson库将接收到的JSON字符串转换为Java对象。 接收到的天气数据可能包含温度、湿度、风速等信息,开发者需要设计合适的数据结构(如...

    SpringMVC:整合JQUERY与JSON

    - **数据序列化与反序列化**:SpringMVC使用`@RequestBody`和`@ResponseBody`注解将JSON数据自动转换为Java对象,反之亦然。 - **响应处理**:jQuery接收服务器返回的JSON数据,通过回调函数处理结果,更新页面...

    springbootJson的解析demo

    本文将深入探讨Spring Boot如何解析JSON数据,包括两种主要的方式:ModelAndView和RESTful API,并提供适用于初学者的实战示例。 1. **Jackson库的使用** Spring Boot默认集成了Jackson库,它提供了对JSON序列化和...

    [搜索链接]Java网络爬虫(蜘蛛)源码_zhizhu.zip

    Java的JDBC API可用于与数据库交互,而JSON库如Jackson或Gson可帮助序列化对象为JSON格式存储。 - 并发处理:为了提高爬取效率,通常会并发处理多个URL。Java的多线程机制或ExecutorService可以实现这一点。 4. ...

    用Ajax构建动态Java程序

    在Java中,可以使用Jackson或Gson库将Java对象转换为JSON字符串。 4. **Ajax与JSP** 在JSP中,可以通过标签引入JavaScript,并在其中编写Ajax请求。同时,JSP可以通过或标签嵌入Java代码,处理请求并返回数据。...

    android实战-热点新闻app(包括操作说明书,系统环境及功能简介,源代码文档)

    2. 数据解析:Android应用通过HTTP请求获取JSON或XML格式的新闻数据,使用Gson或Jackson库解析数据,并将其转化为Java对象。 3. 数据展示:将解析好的数据绑定到UI组件,如RecyclerView,实现动态加载和刷新新闻列表...

Global site tag (gtag.js) - Google Analytics