前言:
App需求均是返回json。所以写一个demo。
正文:
一、添加Jar包:jackson-databind,jackson-core,jackson-annotations
Maven依赖:其中遇到一个大坑!jackson2.2.3与Spring版本4.3.3不兼容。改成2.7.0才兼容。
报了一个找不到方法的错误。我居然一直以为是某个jar包没导入。!!!
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.7.0</version>
</dependency>
二、springmvc-servlet.xml中必须有基于注解驱动:
<!-- 加入注解驱动 -->
<mvc:annotation-driven></mvc:annotation-driven>
三、controller中使用@ResponseBody。
package controller;
import java.util.List;
import javax.annotation.Resource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import model.Book;
import service.IBookService;
@Controller
public class JsonController {
private static Logger log = LoggerFactory.getLogger(JsonController.class);
@Resource
private IBookService iBookService;
@RequestMapping(value="h.do")
public @ResponseBody List<Book> viewBook() {
List<Book> bl = iBookService.getBookByName("大明春色");
log.debug("---------------------json-------------------");
return bl;
}
}
produces="text/html;charset=UTF-8"
四、如果不使用ResponseBody如何使用?
使用ResponseEntity<>,Springmvc自带的工具返回。
@RequestMapping(value="i.do")
public ResponseEntity<List<Book>> viewBook2(){
List<Book> bl = iBookService.getBookByName("大明春色");
log.debug("---------------------json2-------------------");
return new ResponseEntity<List<Book>>(bl,HttpStatus.OK);
}