`
guyunduzai
  • 浏览: 17589 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论
阅读更多

在项目中需要写一个接口,返回json字符串,供别系统调用,返回格式如下:


 
 具体怎么实现呢,下面以代码与注释进行讲解如何实现的,我这里用两种方式,一是用处理response,第二种方法用spring自带的功能。

第一种实现方式:

首先要有个controller,当然我这里写的是一个很简单的实现,只是体现了实现原理,

@RequestMapping(value = "json/blog/{test}")
    public String blog(@PathVariable(value = "test") String test,
            HttpServletResponse response) {
        List<User> userList = new ArrayList<User>();
        User userOne = new User("jack","1001","60","25");
        User userTwo = new User("jackson","1002","80","20");
        userList.add(userOne);
        userList.add(userTwo);
        return ajaxJson(response, getJson(userList));
    }

 在上面这段代码中用到了getJson和ajaxJson方法,这是两个被封装了的方法。getJson(Object)就是很简单的将对象转换为json串,第二个是对reponse做一定的处理,getJson代码如下:

private static Gson gson = new GsonBuilder().enableComplexMapKeySerialization()
            .setDateFormat("yyyy-MM-dd HH:mm:ss").create();

    /**
     * 功能描述:根据Object输出JSON字符串
     */
    public String getJson(Object jsonObject) {
        return gson.toJson(jsonObject);
    }

 ajaxJson方法的代码如下:

public String ajaxJson(HttpServletResponse response,String jsonString) {
		return ajax(response,jsonString, "text/html");
}

public String ajax(HttpServletResponse response, String content, String type) {
		try {
			response.setContentType(type + ";charset=UTF-8");
			response.setHeader("Pragma", "No-cache");
			response.setHeader("Cache-Control", "no-cache");
			response.setDateHeader("Expires", 0);
			response.getWriter().write(content);
			response.getWriter().flush();
		} catch (IOException e) {
			log.error("IOException:", e);
		}
		return null;
	}
// 此方法为添加缓存,varnich缓存
public void setCache(HttpServletResponse response, String cacheTime) {
        long now = System.currentTimeMillis();
        long cacheTimeLong = Long.parseLong(cacheTime);
        response.setDateHeader("Expires", now + cacheTimeLong);
        response.setDateHeader("Last-Modified", now - (now % cacheTimeLong));
        response.setHeader("Cache-Control", "max-age=" + cacheTime+",s-maxage="+ cacheTime);
        response.setHeader("Pragma", "Pragma");
    }

第二种实现方式就很简单了,controller修改如下:

 

@RequestMapping(value = "json/blog/{test}")
    @ResponseBody
    public List<User> blog(@PathVariable(value = "test") String test,
            HttpServletResponse response) {
        List<User> userList = new ArrayList<User>();
        User userOne = new User("jack","1001","60","25");
        User userTwo = new User("jackson","1002","80","20");
        userList.add(userOne);
        userList.add(userTwo);
        return userList;
    }

 

一般在异步获取数据时使用,在使用@RequestMapping后,返回值通常解析为跳转路径,加上@responsebody后返回结果不会被解析为跳转路径,而是直接写入HTTP response body中。比如异步获取json数据,加上@responsebody后,会直接返回json数据看来spring够强大啊,记录下,不过如果用第二种方式的话,如何添加页面缓存和处理callback还有待研究,请大神指点一二!!!

  • 大小: 7.4 KB
分享到:
评论

相关推荐

    ThinkPHP的success并不跳转页面,而是直接输出json字符串的原因.zip解决ThinkPHP的success并不跳转页面,而是直接输出json字符

    在使用ThinkPHP框架进行Web开发时,可能会遇到一个常见的问题:当你调用`success`方法时,期望它能像传统HTTP请求那样跳转到一个新的页面,但实际情况是它却直接输出了一个JSON字符串。这个问题通常与AJAX请求和框架...

    Json_decode 解析json字符串为NULL的解决方法(必看)

    但是有时候我们会发现,即使是看似完整的JSON字符串,在使用`json_decode()`函数解析后返回的却是NULL,这会让人困惑。这篇文章将会详细探讨在使用PHP的`json_decode()`函数解析JSON字符串遇到NULL返回值时的解决...

    javascript处理json字符串和json对象的类(含示例)

    这个方法接收一个JSON字符串作为参数,返回的是解析后的JavaScript对象。例如: ```javascript let jsonString = '{"name": "John", "age": 30, "city": "New York"}'; let jsonObject = JSON.parse(jsonString); ...

    Json字符串格式化JsonView

    安装后,当你访问一个包含JSON数据的URL或者在浏览器控制台输入JSON字符串时,JsonView会自动将其格式化并显示为树状结构。每一层的对象用缩进来表示,键和值之间用冒号分隔,值与逗号之间换行,使得整个数据结构...

    处理ajax返回带有换行的json数据

    在JSON字符串中,换行通常应被转义为`\n`。如果从Ajax请求中接收到的JSON数据包含了未转义的换行符,这将导致解析错误,因为JavaScript会认为这些换行符破坏了对象或数组的结构。 处理这种情况的方法有几种: 1. *...

    jsonView查询json字符串

    加载完成后,JSONView将在浏览任何返回JSON数据的网页时自动激活。 对于开发人员来说,JSONView是一个非常有价值的工具,特别是在处理API响应、调试和测试阶段。它能够提高工作效率,减少解析复杂JSON数据时的困扰...

    jquery的getJson()方法获取服务端返回的JSON字符串

    在描述中提到的例子中,服务器端返回一个JSON字符串,然后这个字符串被绑定到一个下拉框,实现级联效果。这是一个常见的场景,比如当我们需要根据用户在第一个下拉框的选择动态填充第二个下拉框的选项时。下面是一个...

    优化返回json,数据美化json插件

    通过将返回的JSON字符串转换为可读性更强的树形结构或表格形式,使得数据一目了然。这种美化方式有助于快速定位问题,查看数据细节,尤其是在调试API接口或者进行数据验证时。 该插件的功能可能包括以下几点: 1. ...

    servlet局部刷新及json字符串

    1.纯servlet+jquery局部刷新; 2.fresh 后台包含 json内容,需要json相关jar包,自行下载,不需要的可以删除; 3.有页面点击事件,初学者可以研究下...4.QQ569317668 不喜勿喷 servlet局部刷新及json字符串 相互学习!

    DWR 初始,返回字符串&对象&列表

    DWR会将其转换为JSON字符串,JavaScript端可以接收到一个JavaScript对象,这样就能直接访问`Person`对象的属性。 3. **返回列表**: 当你需要从服务器获取一组数据时,DWR可以通过返回列表来实现。比如,你可能有...

    多层集合的JSON串拼接

    在前端,你可以使用jQuery的`$.ajax()`或`$.getJSON()`方法来发送异步请求到服务器获取JSON数据,然后使用`$.parseJSON()`或`JSON.parse()`来解析返回的JSON字符串。 5. **服务器端拼接**:在`testMethod.java`和`T...

    JSONFormat-master.zip

    特别是在处理大量或复杂的数据时,格式化的JSON字符串能够帮助快速定位问题,进行数据验证,或者在团队协作中清晰地分享数据结构。 总的来说,JSONFormat-master是一个方便实用的工具,它简化了JSON数据的查看和...

    ajax返回字符串

    在返回字符串为JSON时,需要使用JSON.parse()将字符串转换为JavaScript对象。 3. **回调函数**:处理返回的字符串通常在success回调函数中进行,我们可以在这里对数据进行解析、操作或者更新DOM元素。 三、示例...

    Java 实现Redis存储复杂json格式数据并返回给前端

    获取时,直接返回JSON字符串,由前端解析。但这种方式只适用于简单的JSON数据,如果数据结构复杂,可能导致解析错误。 3. **对象序列化存储**:对于复杂的JSON数据,我们可以使用Java的序列化机制。`SerializeUtil`...

    js处理json以及字符串的比较等常用操作

    - 插入操作:可以通过JavaScript中的对象来表示JSON数据,并使用JSON字符串表示法进行数据的存储和交换。在上述HTML中,插入操作通过创建一个新的OPTION元素,并利用add方法将其添加到select元素中实现。 - 修改...

    jQuery+get/post+Ajax+Json

    4. JSON字符串与JSON对象的转换:在JavaScript中,我们可以使用`JSON.stringify()`方法将JavaScript对象转换成JSON字符串,以便通过Ajax发送;而`JSON.parse()`方法则用于将接收到的JSON字符串解析成JavaScript对象...

    struts2返回JSON数据的两种方式

    总结,Struts2中返回JSON数据有两种主要方式:一是通过`response.getWriter().print()`手动输出JSON字符串;二是利用Struts2的内置JSON插件,通过返回特定的属性和结果类型自动处理JSON。每种方法都有其适用场景,...

    jQuery中ajax请求后台返回json数据并渲染HTML的方法

    在文章中的PHP实例部分,使用了ThinkPHP框架中的M方法来查询数据库,返回的是一个包含菜品信息的数组,然后使用json_encode()函数将数组编码为JSON字符串。 3. 在前端处理返回的JSON数据:在$.ajax()方法的success...

    list转json

    总结来说,将list转换为JSON字符串是Python中常见的数据处理任务,特别是在Web开发中,如AJAX交互。通过`json.dumps()`或`jsonify`,我们可以方便地完成这个转换。同时,理解如何在客户端使用JSON数据,如在...

    struts-2.5.14.1 基本框架 基于注解 返回页面 返回json数据

    在本教程中,我们将深入探讨如何使用Struts2的注解特性、返回页面以及返回JSON数据。 **基于注解的配置** Struts2允许开发者使用注解来替代传统的XML配置文件,简化应用的配置过程。例如,我们可以使用`@Action`...

Global site tag (gtag.js) - Google Analytics