@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. Deep Auto-encoder

    autoencoder可以用于数据压缩.降维,预训练神经网络,生成数据等等. autoencoder的架构 autoencoder的架构是这样的: 需要分别训练一个Encoder和一个Decoder. ...

  2. SpringBoot ControllerAdvice

    在Spring3.2中新增了@ControllerAdvice注解,可用于定义@ExceptionHandler @ModelAttribute @InitBinder,并应用到所有被@Request ...

  3. [BZOJ1257]余数之和

    Description 给出正整数n和k,计算j(n, k)=k mod 1 + k mod 2 + k mod 3 + … + k mod n的值 其中k mod i表示k除以i的余数. 例如j(5 ...

  4. IDEA 编译时 未结束的字符串文字

    这个问题就是编码的问题,修改文件的编码可以解决 1. IDEA中   file-->Settings 找到File Encodings,将IDE Encoding.Project Encodin ...

  5. MyEclipse中删除对Struts、Hibernate、Spring .

    已经导入一下框架,现在发现不想用了,要删除,发现麻烦,添加容易删除不易,下面这个帮你解决删除问题,本文为转载,我试过hibenate,挺好使,你们验证其他的框架 http://blog.csdn.ne ...

  6. XML 存储文档

    package com.kpsh.myself; import java.io.File;import java.io.FileWriter; import org.dom4j.Document;im ...

  7. excel 拖拽计算时,固定一个数

    $ 表示静态引用(也叫绝对引用)的意思.即固定引用的单元格的行或列. $A1即固定列为A,$A$2即固定引用为A列2行的单元格. A$3则只固定引用为第三行. 我们在使用excel拖拽计算时,常遇到这 ...

  8. virtio,vhost 和vhost-user

    随着qemu2.1的发布,可以看到,qemu支持了vhost-user.从介绍可以看出,这是把原来vhost-backend从kernel移到了userspace,这和原来virtio架构有什么区别呢 ...

  9. 在js中,ajax放在for中,ajax获取得到的变量有误

    先看代码 for(var i=0;i<tds.length;i++){ mui.ajax(url+'api/client/gifts/isSigned', {data :{ sqId:" ...

  10. Selenium with Python 006 - 操作浏览器

    #!/usr/bin/env python # -*- coding: utf-8 -*- from selenium import webdriver import time driver = we ...