`

Spring集成Jackson序列化java对象

 
阅读更多

测试环境: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;
	}

 

分享到:
评论

相关推荐

    spring使用jackson实现json

    四、使用Jackson序列化与反序列化 1. 序列化:将Java对象转换为JSON ```java import com.fasterxml.jackson.databind.ObjectMapper; // 创建一个对象 MyObject obj = new MyObject(); // 使用ObjectMapper将其转换...

    jackson 使用方法(序列化效率很高)

    首先,Jackson的核心组件包括`ObjectMapper`,它是整个框架的入口点,负责将Java对象转换为JSON字符串(序列化)以及将JSON字符串还原为Java对象(反序列化)。`ObjectMapper`提供了丰富的API,允许我们进行复杂的...

    Redis集成Spring的Java代码

    // 可以配置序列化器,例如JdkSerializationRedisSerializer Jackson2JsonRedisSerializer&lt;Object&gt; serializer = new Jackson2JsonRedisSerializer(Object.class); ObjectMapper om = new ObjectMapper(); om....

    spring4 jackson2.5.3.jar 包

    Spring 4.x.x版本引入了对JSON处理的强大支持,而Jackson 2.5.3则是Jackson库的一个具体版本,用于实现高效的JSON序列化和反序列化。下面将详细阐述这两个技术在协同工作时的关键知识点。 首先,Jackson是Java中...

    spring整合redis(spring模板+连接池+json序列化+cluster集群).zip

    `Jackson2JsonRedisSerializer`是Spring提供的一个实现,它可以将Java对象转换为JSON字符串,再从JSON字符串反序列化回Java对象。要使用这个序列化器,我们需要在`RedisTemplate`的配置中指定,同时确保项目中已经...

    jackson最新资源包适合spring4.X

    5. **序列化与反序列化**:Jackson提供了一种直观的方式来序列化Java对象为JSON字符串,以及将JSON字符串反序列化为Java对象。`ObjectMapper`是Jackson的核心类,它提供了`writeValueAsString()`和`readValue()`等...

    spring+jackson+sqljdbc的jar包

    其次,Jackson库的`jackson-databind-2.5.0.jar`是处理JSON数据的主要组件,它提供了将Java对象序列化为JSON和反序列化回Java对象的功能,使得JSON数据与Java对象之间的转换变得简单。 最后,`sqljdbc4.jar`是微软...

    jackson依赖jar包.

    - 兼容性好:Jackson库广泛支持Java标准库和其他第三方库,与其他Java技术(如Spring框架)集成良好。 总之,"jackson依赖jar包"是Java开发者在处理JSON数据时的得力助手,它提供的功能强大且易于使用,是构建现代...

    Spring4.2.9+mybatis3.4.4集成(整合Jackson、防御XSS版)支持JDK1.6、Tomcat6

    为了在Spring中集成Jackson,你需要: 1. 添加Jackson库依赖。 2. 配置Spring MVC,使它能够使用Jackson进行JSON转换,通常在`web.xml`中配置`MappingJackson2HttpMessageConverter`。 **防御XSS攻击** XSS...

    jackson-core-asl-1.9.13+jackson-mapper-asl-1.9.13札包

    它提供了一整套高效的工具,用于序列化和反序列化Java对象到JSON格式,以及从JSON数据转换回Java对象。在这个"jackson-core-asl-1.9.13+jackson-mapper-asl-1.9.13"压缩包中,包含的是Jackson库的两个核心组件:`...

    jackson-core所需的三个包;jackson-databind.jar,jackson-annotations.jar,jackson-core.jar

    3. **jackson-annotations.jar**:包含了一系列的注解,这些注解可以用来配置Jackson如何序列化和反序列化Java对象。例如,@JsonProperty用于指定哪些字段应该被序列化或反序列化,@JsonIgnore可以忽略某个字段,@...

    Spring4.2.9+mybatis3.4.4集成(整合Jackson版)支持JDK1.6、Tomcat6

    SSM(Spring、SpringMVC、MyBatis)框架是Java Web开发中常见的技术栈,而Spring 4.2.9、MyBatis 3.4.4是这两个框架的特定版本,它们与Jackson的集成则涉及到JSON数据的序列化和反序列化。在这个集成中,Jackson通常...

    jackson所需jar包springmvc中稳定版

    Jackson是Java世界中广泛使用的JSON处理库,它提供了序列化和反序列化的功能,使得Java对象可以方便地转换为JSON格式,反之亦然。在Spring MVC框架中,Jackson被用作默认的JSON转换器,帮助处理HTTP请求和响应中的...

    《Jackson 框架,轻易转换JSON》学习笔记

    Jackson分为多个模块,如core、databind和jackson-dataformat-xml等,其中最常用的是jackson-databind,它实现了将Java对象映射到JSON和从JSON反序列化回Java对象的能力。 2. JSON序列化与反序列化 - 序列化:将...

    Spring4+SpringMVC4+Hibernate4+Jackson2.5.0

    **Jackson2.5.0** 是一个JSON处理库,用于在Java中序列化和反序列化JSON数据。它可以方便地将Java对象转换为JSON格式,或者将JSON字符串解析为Java对象,极大地简化了数据交换的过程。Jackson2.5.0版本包含了多项...

    基于java的高性能的JSON处理 Jackson.zip

    1. **序列化**:将Java对象转换为JSON字符串,如上例所示。 2. **反序列化**:将JSON字符串转换为Java对象,例如: ```java MyObject obj = mapper.readValue(jsonString, MyObject.class); ``` **四、高级功能*...

    使用json-lib将java对象转换成json字符串

    JSON字符串到Java对象的转换通常通过反序列化实现,而Java对象到JSON字符串的转换则称为序列化。 - json-lib库提供了一套API,使得这种转换变得简单。例如,使用`net.sf.json.JSONObject.fromObject()`方法可以将...

    jackson所需所有jar包

    - `jackson-databind-2.9.7.jar`: Jackson Data Bind模块是Jackson的核心部分,提供了将Java对象映射到JSON和从JSON反序列化回Java对象的能力。例如,`ObjectMapper`类就是该模块的重要组成部分,可以方便地进行...

    jackson 全部jar包

    2. **Jackson数据绑定**:`jackson-databind`是Jackson的主要功能模块,实现了将JSON数据映射到Java对象(POJOs)和反向转换的能力。它支持注解驱动的配置,使得数据绑定过程更加灵活。 3. **Jackson注解**:`...

    jackson 1.5中文帮助文档

    1. **JSON序列化与反序列化**:Jackson库提供了将Java对象转换为JSON格式(序列化)和从JSON数据创建Java对象(反序列化)的功能。这在API交互、存储或传输数据时非常有用。`ObjectMapper`类是实现这一功能的主要...

Global site tag (gtag.js) - Google Analytics