简介: Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json、xml转换成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/ 二、实例 (1)java对象转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 } }
(2)json转java对象
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 } }
(3)java对象转xml(依赖于stax2-api.jar)
XmlMapper xml = new XmlMapper(); StringWriter sw = new StringWriter(); xml.writeValue(sw, bean);
(4)json中取属性值
/** * 实现将包含单一对象和其他集合的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(); }
(5)json转List
/** * 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类型进行输出的。
相关推荐
Jackson框架是Java中广泛使用的JSON处理库,由FasterXML公司开发并维护。它提供了高效、灵活的JSON序列化和反序列化功能,使得在Java对象与JSON数据之间进行转换变得简单。这篇博客"Jackson 框架 json 到 复杂 list ...
2. 序列化:将Java对象转换为JSON字符串的过程,可以使用Gson或Jackson的`toJson()`方法。 五、JSON Schema JSON Schema是一种JSON格式的规范,用于定义JSON数据的结构和限制,有助于验证JSON数据是否符合规范。 ...
5. **XML与JSON转换**:使用`JSONObject.fromXML()`和`JSONObject.toXML()`方法实现XML与JSON之间的转换。 ### JSON-lib的优缺点 优点: - 易于理解和使用,API简洁直观。 - 支持多种数据结构的转换,包括XML。 - ...
总的来说,这个项目提供了关于如何在Android应用中使用JSON进行网络数据交换的实战案例,涵盖了客户端和服务端的实现。通过学习和分析这些源码,开发者可以深入理解网络通信、JSON解析、异常处理以及后台线程的使用...
Java提供DOM、SAX和Jackson等库来解析和生成这些格式的数据。 8. **设计模式**:为了实现良好的代码结构和可维护性,项目中可能会应用到各种设计模式,如单例模式(管理QQ登录状态)、工厂模式(创建不同类型的聊天...
它们可以帮助我们将Java对象转换为JSON字符串,方便在WebSocket通信中传递复杂数据结构。 总的来说,这个实战教程将引导开发者在SSM项目中集成WebSocket,实现高效、实时的数据交换。通过学习和实践,开发者可以...
这个项目利用了Java的强大功能和灵活性,结合网络请求、数据解析以及定时任务等技术,实现了对特定商品(如茅台酒)的实时监控和快速下单操作。下面将详细解释这个项目中的关键知识点: 1. **Java基础**:项目的...
4. **集合框架**:Java集合框架包括ArrayList、LinkedList、HashSet、HashMap等,是存储和操作对象的主要工具。书中的例子会教你如何选择合适的集合类型,以及如何使用迭代器、泛型、并发集合等高级特性。 5. **IO...
12. **XML和JSON解析**:数据交换格式的学习,如DOM、SAX解析XML,以及Gson、Jackson库处理JSON。 13. **Spring框架**:作为Java企业级应用的主流框架,Spring的依赖注入、AOP、MVC等核心概念将在实例中得到展现。 ...
- JSON解析:Gson、Jackson或org.json库用于将JSON数据转换为Java对象。 6. **异步处理**: - AsyncTask:执行后台任务并更新UI的简单方式,但已不推荐在新版本中使用。 - IntentService:在后台执行单一任务,...
18. **JSON和XML处理**:Java提供了如Jackson、Gson库处理JSON,JAXB、DOM、SAX处理XML,这些在数据交换和序列化中十分常见。 19. **JVM(Java虚拟机)**:JVM是Java运行的基石,负责解析字节码、垃圾回收和性能...
对于复杂的对象传输,可以使用序列化技术,如JSON库Jackson或Gson进行对象到JSON字符串的转换。 接下来,我们讨论存储过程。存储过程是预编译在数据库中的SQL语句集合,它可以提高查询效率,减少网络传输,增强安全...
可以使用如Gson或Jackson库将Java对象转换为JSON,便于前后端数据传递。 6. **Ajax异步通信**:为了让用户体验更流畅,项目可能会使用Ajax(Asynchronous JavaScript and XML)进行局部页面更新,而不是每次都刷新...
同时,JSON是常见的数据交换格式,开发者需要熟悉JSON解析,可以使用Gson或Jackson库将接收到的JSON字符串转换为Java对象。 接收到的天气数据可能包含温度、湿度、风速等信息,开发者需要设计合适的数据结构(如...
- **数据序列化与反序列化**:SpringMVC使用`@RequestBody`和`@ResponseBody`注解将JSON数据自动转换为Java对象,反之亦然。 - **响应处理**:jQuery接收服务器返回的JSON数据,通过回调函数处理结果,更新页面...
本文将深入探讨Spring Boot如何解析JSON数据,包括两种主要的方式:ModelAndView和RESTful API,并提供适用于初学者的实战示例。 1. **Jackson库的使用** Spring Boot默认集成了Jackson库,它提供了对JSON序列化和...
Java的JDBC API可用于与数据库交互,而JSON库如Jackson或Gson可帮助序列化对象为JSON格式存储。 - 并发处理:为了提高爬取效率,通常会并发处理多个URL。Java的多线程机制或ExecutorService可以实现这一点。 4. ...
在Java中,可以使用Jackson或Gson库将Java对象转换为JSON字符串。 4. **Ajax与JSP** 在JSP中,可以通过标签引入JavaScript,并在其中编写Ajax请求。同时,JSP可以通过或标签嵌入Java代码,处理请求并返回数据。...
2. 数据解析:Android应用通过HTTP请求获取JSON或XML格式的新闻数据,使用Gson或Jackson库解析数据,并将其转化为Java对象。 3. 数据展示:将解析好的数据绑定到UI组件,如RecyclerView,实现动态加载和刷新新闻列表...