八、处理JSON

一、返回JSON

  编写目标方法,使其返回 JSON 对应的对象或集合

@ResponseBody  //SpringMVC对JSON的支持
@RequestMapping("/testJSON")
public Collection<Employee> testJSON(){
    return employeeDao.getAll();
}

 

  增加页面代码:index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    <script type="text/javascript" src="scripts/jquery-1.9.1.min.js"></script>
    <script type="text/javascript">
$(function(){ 
  $("#testJSON").click(function(){
   
    var url = this.href ;
    var args = {};
    $.post(url,args,function(data){
    for(var i=0; i<data.length; i++){
      var id = data[i].id;
      var lastName = data[i].lastName ;
    alert(id+" - " + lastName);
    }
  });
 
  return false ;
  });                
});
</script>
 
</head>
<body>
 
  <a href="empList">To Employee List</a>
<br><br>
 
  <a id="testJSON" href="testJSON">testJSON</a>
 
</body>
</html>

 

  测试

八、处理JSON

二、HttpMessageConverter原理

  HttpMessageConverter<T>

  1. HttpMessageConverter<T> 是 Spring3.0 新添加的一个接口,负责将请求信息转换为一个对象(类型为 T),将对象(类型为 T)输出为响应信息
  2. HttpMessageConverter<T>接口定义的方法:

    • Boolean canRead(Class<?> clazz,MediaType mediaType): 指定转换器可以读取的对象类型,即转换器是否可将请求信息转换为 clazz 类型的对象,同时指定支持 MIME 类型(text/html,applaiction/json等)

    • Boolean canWrite(Class<?> clazz,MediaType mediaType):指定转换器是否可将 clazz 类型的对象写到响应流中,响应流支持的媒体类型在MediaType 中定义。

    • List<MediaType> getSupportMediaTypes():该转换器支持的媒体类型。

    • T read(Class<? extends T> clazz,HttpInputMessage inputMessage):将请求信息流转换为 T 类型的对象。

    • void write(T t,MediaType contnetType,HttpOutputMessgae outputMessage):将T类型的对象写到响应流中,同时指定相应的媒体类型为 contentType。

八、处理JSON

public interface HttpInputMessage extends HttpMessage {
 
InputStream getBody() throws IOException;
 
}


public interface HttpOutputMessage extends HttpMessage {
 
OutputStream getBody() throws IOException;
 
}

 

八、处理JSON

  

  DispatcherServlet 默认装配 RequestMappingHandlerAdapter ,而 RequestMappingHandlerAdapter 默认装配如下 HttpMessageConverter:

八、处理JSON

  

  加入 jackson jar 包后, RequestMappingHandlerAdapter 装配的 HttpMessageConverter  如下:

八、处理JSON

  

  默认情况下数组长度是6个;增加了jackson的包,后多个一个MappingJackson2HttpMessageConverter

八、处理JSON

八、处理JSON

上一篇:30 行代码绘出你的微信朋友统计图


下一篇:jackson实现java对象转支付宝/微信模板消息