测试环境:spring 3.1.1 + Hibernate 3.3.2 + Jackson-all-1.8.0
spring 配置如下:
<?xml version="1.0" encoding="UTF-8"?> <!-- Bean头部 --> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xmlns:util="http://www.springframework.org/schema/util" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd"> <context:component-scan base-package="com.ciaos.controller"/> <mvc:annotation-driven /> <!-- Configure to plugin JSON as request and response in method handler --> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> <property name="messageConverters"> <list> <ref bean="jsonMessageConverter"/> </list> </property> </bean> <!-- Configure bean to convert JSON to POJO and vice versa --> <bean id="jsonMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"> </bean> </beans>
controller使用示例如下:
package com.ciaos.controller; import java.io.IOException; import java.util.HashMap; import java.util.List; import java.util.Map; import org.codehaus.jackson.JsonGenerationException; import org.codehaus.jackson.map.JsonMappingException; import org.codehaus.jackson.map.ObjectMapper; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import com.ciaos.dao.Account; import com.ciaos.dao.AccountDAO; import com.ciaos.dao.Hobby; import com.ciaos.dao.HobbyDAO; @Controller public class DemoController { @RequestMapping(value ="/rest.json") @ResponseBody public Object json(@RequestParam Integer id){ AccountDAO dao = new AccountDAO(); Account account = dao.findById(id); Map<String, Object> response = new HashMap<String, Object>(); response.put("result", account); return response; } @RequestMapping(value ="/rest.jsonp", produces = "text/javascript;charset=UTF-8") @ResponseBody public Object jsonp(@RequestParam("callback") String callback, @RequestParam Integer id){ HobbyDAO dao = new HobbyDAO(); List<Hobby> list = dao.findAll(); Map<String, Object> response = new HashMap<String, Object>(); response.put("result", list); ObjectMapper mapper = new ObjectMapper(); String resultstr = null; try { resultstr = mapper.writeValueAsString(response); } catch (JsonGenerationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (JsonMappingException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return callback + "(" + resultstr + ")"; } }
POJO类增加@JsonIgnore防止递归错误
//Account.java (隐藏不需要的字段) // Property accessors @Id @GeneratedValue(strategy = IDENTITY) @JsonIgnore @Column(name = "id", unique = true, nullable = false) public Integer getId() { return this.id; } //Hobby.java (防止递归) @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "accountid") @JsonIgnore public Account getAccount() { return this.account; }
相关推荐
四、使用Jackson序列化与反序列化 1. 序列化:将Java对象转换为JSON ```java import com.fasterxml.jackson.databind.ObjectMapper; // 创建一个对象 MyObject obj = new MyObject(); // 使用ObjectMapper将其转换...
首先,Jackson的核心组件包括`ObjectMapper`,它是整个框架的入口点,负责将Java对象转换为JSON字符串(序列化)以及将JSON字符串还原为Java对象(反序列化)。`ObjectMapper`提供了丰富的API,允许我们进行复杂的...
// 可以配置序列化器,例如JdkSerializationRedisSerializer Jackson2JsonRedisSerializer<Object> serializer = new Jackson2JsonRedisSerializer(Object.class); ObjectMapper om = new ObjectMapper(); om....
Spring 4.x.x版本引入了对JSON处理的强大支持,而Jackson 2.5.3则是Jackson库的一个具体版本,用于实现高效的JSON序列化和反序列化。下面将详细阐述这两个技术在协同工作时的关键知识点。 首先,Jackson是Java中...
`Jackson2JsonRedisSerializer`是Spring提供的一个实现,它可以将Java对象转换为JSON字符串,再从JSON字符串反序列化回Java对象。要使用这个序列化器,我们需要在`RedisTemplate`的配置中指定,同时确保项目中已经...
5. **序列化与反序列化**:Jackson提供了一种直观的方式来序列化Java对象为JSON字符串,以及将JSON字符串反序列化为Java对象。`ObjectMapper`是Jackson的核心类,它提供了`writeValueAsString()`和`readValue()`等...
其次,Jackson库的`jackson-databind-2.5.0.jar`是处理JSON数据的主要组件,它提供了将Java对象序列化为JSON和反序列化回Java对象的功能,使得JSON数据与Java对象之间的转换变得简单。 最后,`sqljdbc4.jar`是微软...
- 兼容性好:Jackson库广泛支持Java标准库和其他第三方库,与其他Java技术(如Spring框架)集成良好。 总之,"jackson依赖jar包"是Java开发者在处理JSON数据时的得力助手,它提供的功能强大且易于使用,是构建现代...
为了在Spring中集成Jackson,你需要: 1. 添加Jackson库依赖。 2. 配置Spring MVC,使它能够使用Jackson进行JSON转换,通常在`web.xml`中配置`MappingJackson2HttpMessageConverter`。 **防御XSS攻击** XSS...
它提供了一整套高效的工具,用于序列化和反序列化Java对象到JSON格式,以及从JSON数据转换回Java对象。在这个"jackson-core-asl-1.9.13+jackson-mapper-asl-1.9.13"压缩包中,包含的是Jackson库的两个核心组件:`...
3. **jackson-annotations.jar**:包含了一系列的注解,这些注解可以用来配置Jackson如何序列化和反序列化Java对象。例如,@JsonProperty用于指定哪些字段应该被序列化或反序列化,@JsonIgnore可以忽略某个字段,@...
SSM(Spring、SpringMVC、MyBatis)框架是Java Web开发中常见的技术栈,而Spring 4.2.9、MyBatis 3.4.4是这两个框架的特定版本,它们与Jackson的集成则涉及到JSON数据的序列化和反序列化。在这个集成中,Jackson通常...
Jackson是Java世界中广泛使用的JSON处理库,它提供了序列化和反序列化的功能,使得Java对象可以方便地转换为JSON格式,反之亦然。在Spring MVC框架中,Jackson被用作默认的JSON转换器,帮助处理HTTP请求和响应中的...
Jackson分为多个模块,如core、databind和jackson-dataformat-xml等,其中最常用的是jackson-databind,它实现了将Java对象映射到JSON和从JSON反序列化回Java对象的能力。 2. JSON序列化与反序列化 - 序列化:将...
**Jackson2.5.0** 是一个JSON处理库,用于在Java中序列化和反序列化JSON数据。它可以方便地将Java对象转换为JSON格式,或者将JSON字符串解析为Java对象,极大地简化了数据交换的过程。Jackson2.5.0版本包含了多项...
1. **序列化**:将Java对象转换为JSON字符串,如上例所示。 2. **反序列化**:将JSON字符串转换为Java对象,例如: ```java MyObject obj = mapper.readValue(jsonString, MyObject.class); ``` **四、高级功能*...
JSON字符串到Java对象的转换通常通过反序列化实现,而Java对象到JSON字符串的转换则称为序列化。 - json-lib库提供了一套API,使得这种转换变得简单。例如,使用`net.sf.json.JSONObject.fromObject()`方法可以将...
- `jackson-databind-2.9.7.jar`: Jackson Data Bind模块是Jackson的核心部分,提供了将Java对象映射到JSON和从JSON反序列化回Java对象的能力。例如,`ObjectMapper`类就是该模块的重要组成部分,可以方便地进行...
2. **Jackson数据绑定**:`jackson-databind`是Jackson的主要功能模块,实现了将JSON数据映射到Java对象(POJOs)和反向转换的能力。它支持注解驱动的配置,使得数据绑定过程更加灵活。 3. **Jackson注解**:`...
1. **JSON序列化与反序列化**:Jackson库提供了将Java对象转换为JSON格式(序列化)和从JSON数据创建Java对象(反序列化)的功能。这在API交互、存储或传输数据时非常有用。`ObjectMapper`类是实现这一功能的主要...