首页 > Web开发 > 详细

八、处理JSON

时间:2021-03-16 17:38:16      阅读:29      评论:0      收藏:0      [点我收藏+]

一、返回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>

 

  测试

技术分享图片

二、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。

技术分享图片

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


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

 

技术分享图片

  

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

技术分享图片

  

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

技术分享图片

  

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

技术分享图片

八、处理JSON

原文:https://www.cnblogs.com/jdy1022/p/14544621.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!