@RequestMapping(value = "/dblist", method = RequestMethod.GET)
@ResponseBody
public Map<String, String> getDBList(Model model, HttpServletRequest request, HttpServletResponse response) {
Map<String, String> ret = Maps.newHashMap(); try {
List<String> dbList = this.leftTreeService.getDBList(request.getSession(false));
StringBuilder sb = new StringBuilder();
for (String dbName : dbList) {
sb.append(dbName).append(",");
} ret.put("dblist", sb.toString());
} catch (Throwable t) {
int statusCode = t instanceof BizException ? Consts.BIZ_ERROR_CODE
: HttpStatus.ORDINAL_500_Internal_Server_Error;
response.setStatus(statusCode);
} return ret;
}

  @ResponseBody,代表着该函数返回的值将会放到response中,如果是复杂形式,将会被解析为JSON;如果返回的是Map,那么前台直接可以通过类似于对象的方式来获取(因为后台返回的json字符串被前台直接解析为就是JSON对象):

 function getDBList(){
$.getJSON("${ctx}/query/dblist",function(data){
alert(data.dblist);
});
}

  早期的时候,返回的是List<Map<String, String>>,这个时候,就需要data就是一个List,需要通过索引来进行获取:

 function getDBList(){
$.getJSON("${ctx}/query/dblist",function(data){
alert(data[0].dblist);
});
}

$.getJSON("${ctx}/query/db/" + dbname +"/table/"+ tablename + "/fields", function(data) {.. ...});等价于
$.ajax({
  dataType: "json",
  url: url,
  data: data,
  success: success
});

RESTful的风格,返回的都是json,处理的也都是JSON,所以,需要有些坑避免:
1. 接口文档要看明白,值是[]还是{},前者是list<Map<String,Object>,后者直接就是Map<String,Object>即可;
2. 要看明白返回值中是否string,integer等多个类型,那样设计接收和发送的Map都是<String,Object>类型,值类型不要写死为固定的类型。

RESTful处理JSON的更多相关文章

  1. CXF(2.7.10) - RESTful Services, JSON Support

    在 CXF(2.7.10) - RESTful Services 介绍了 REST 风格的 WebService 服务,数据传输是基于 XML 格式的.如果要基于 JSON 格式传输数据,仅需要将注解 ...

  2. Spring MVC 学习总结(九)——Spring MVC实现RESTful与JSON(Spring MVC为前端提供服务)

    很多时候前端都需要调用后台服务实现交互功能,常见的数据交换格式多是JSON或XML,这里主要讲解Spring MVC为前端提供JSON格式的数据并实现与前台交互.RESTful则是一种软件架构风格.设 ...

  3. Restful --- 让JSON回归单纯

    设计模式才是软件哲学的根本.. 一种软件架构风格.设计风格,而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓 ...

  4. delphi7的新生,参与分布式应用开发,调用RESTful API,Json的应用

    前言: 1.公司delphi7开发的传统软件还活得好好的,但是大家都知道delphi早已经日落西山了,现在成了后进.追随者.细细算了已经6.7不用了.新的delphixe7呢,没有时间成本去适应和研究 ...

  5. 一百零一:CMS系统之自定义restful风格json返回格式和内容

    鉴于flask-restful用起来太麻烦,这里自定义json统一返回格式和内容 from flask import jsonify class HttpCode: """ ...

  6. restful返回 json数据的JavaBean设计01

    public class ResponseEntity implements Serializable { private int errCode; private String message; p ...

  7. Yii2框架RESTful API教程(二) - 格式化响应,授权认证和速率限制

    之前写过一篇Yii2框架RESTful API教程(一) - 快速入门,今天接着来探究一下Yii2 RESTful的格式化响应,授权认证和速率限制三个部分 一.目录结构 先列出需要改动的文件.目录如下 ...

  8. Apache CXF实现Web Service(2)——不借助重量级Web容器和Spring实现一个纯的JAX-RS(RESTful) web service

    实现目标 http://localhost:9000/rs/roomservice 为入口, http://localhost:9000/rs/roomservice/room为房间列表, http: ...

  9. nova创建虚拟机源码分析系列之一 restful api

    开始学习openstack源码,源码文件多,分支不少.按照学习的方法走通一条线是最好的,而网上推荐的最多的就是nova创建虚机的过程.从这一条线入手,能够贯穿openstack核心服务.写博文仅做学习 ...

随机推荐

  1. idea通过springboot初始化器新建项目

    1.通过初始化器新建项目,勾选后 对应生成的pom文件 以及生成的包路径 2.生成项目后点击稍后弹出的自动自动导入maven工程的改变,当pom中有依赖改变时会自动刷新导入依赖 3.删除自动生成项目的 ...

  2. G1垃圾回收器参数配置

    下面是完整的 G1 的 GC 开关参数列表. 选项/默认值 说明 -XX:+UseG1GC 使用 G1 (Garbage First) 垃圾收集器 -XX:MaxGCPauseMillis=n 设置最 ...

  3. 平滑重启php

    kill -USR2 `cat /usr/local/webserver/php/var/run/php-fpm.pid`

  4. scala学习手记40 - 使用case类

    前面两节我们已经多次接触过case关键字了.case关键字不仅可以用在match/case中来执行模式匹配,也可以用来修饰类.不过用case修饰的类也主要是用来做模式匹配.在上一节曾经提到过match ...

  5. LeetCode第[56]题(Java):Merge Intervals

    题目:合并区间 难度:Medium 题目内容:   Given a collection of intervals, merge all overlapping intervals. 翻译: 给定一个 ...

  6. MyBatis学习(3)

    MyBatis-逆向工程 Mybatis工作原理 一个MapperStatement代表一个封装改查标签的详细信息. Configuration对象保存了所有配置文件的详细信息. 总结:把配置文件的信 ...

  7. OWIN初探

    什么是 OWIN ? OWIN 的全称是 "Open Web Interface for .NET", OWIN 在 .NET Web 服务器和 .NET Web 应用之间定义了一 ...

  8. Java 子类实例化对象的过程

    子类实例化是否会实例化父类? 不会.父类在子类实例化过程中是并没有被实例化,java中new子类没有实例化父类,只是调用父类的构造方法初始化了,子类从父类继承来的属性,这个调用是子类的对象调用的父类的 ...

  9. Windows下下载及安装numpy、pandas及简单应用

    下载numpy 下载地址 https://pypi.python.org/pypi/numpy 进入网站,下载和自己电脑及电脑中安装的python匹配的numpy版本.我的电脑是Win 10 x64位 ...

  10. HDU - 4746预处理莫比乌斯反演

    链接 求[1,n] 和 [1,m]中有多少对数的GCD的素因子个数小于等于p 直接暴力做特定超时,所以我们想办法预处理,对于p大于18(1到5e5的最大素数因子个数)的情况,每一对都满足条件,O(1) ...