Json代码实战演练


Json是什么

Json是一种数据交换格式,完全独立于编程语言的文本格式,有一套标准的语法规则,便于机器解析。

为什么用Json

可读性、可拓展性强、编写难度低;作为统一的数据文本格式在不同平台间规范数据格式。

怎么用Json

在JS中,Json文本能被解析为对象;对象也可解析为Json文本。

在SpringMVC中,添加了@RestController/@Responsebody的控制器能将返回对象解析为Json文本;添加了@RequestBody能将请求体中Json文本解析为对应对象。

若对SpringMVC自动解析需求不满,可通过定义自定义方法参数解析器HandlerMethodArgumentResolver,通过RequestMappingHandlerAdapter注入请求映射处理器中执行,完成对请求体Json文本转换为方法参数对象。

自定义方法参数解析器:

参数解析器编写:

import com.myProject.filter.RequestWrapper;
import org.springframework.core.MethodParameter;
import org.springframework.web.bind.support.WebDataBinderFactory;
import org.springframework.web.context.request.NativeWebRequest;
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.method.support.ModelAndViewContainer;public class JsonArgumentResolver implements HandlerMethodArgumentResolver {@Overridepublic boolean supportsParameter(MethodParameter parameter) {return parameter.hasParameterAnnotation(JsonRequestBody.class);}@Overridepublic Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception {// Json请求体,RequestWrapper为在过滤器中对原生ServletRequest进行替换,以便可重复读取请求体String body = ((RequestWrapper) webRequest.getNativeRequest ()).getBody ();        return "此处可根据需要对请求体的数据进行获取,返回值为对标注了@JsonRequestBody注释的方法参数的赋值";}
}

参数解析器注入:

import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;@Configuration
public class ResolverConfiguration {@Autowiredprivate RequestMappingHandlerAdapter handlerAdapter;@PostConstructpublic void injectSelfMethodArgumentResolver() {List<HandlerMethodArgumentResolver> argumentResolvers = new ArrayList<> ();argumentResolvers.add(new JsonArgumentResolver ());//新参数解析器列表添加原参数解析器列表argumentResolvers.addAll(adapter.getArgumentResolvers());//处理器适配器中添加新参数解析器列表handlerAdapter.setArgumentResolvers(argumentResolvers);}
}

Json前后端实战

前端使用Json类型的请求体

未完待续

Json代码实战演练相关推荐

  1. php接口返回错误码,laravel 错误处理,接口错误返回json代码

    Laravel 默认已经为我们配置好了错误和异常处理,我们在 App\Exceptions\Handler 类中触发异常并将响应返回给用户. 所有异常都由类App\Exceptions\Handler ...

  2. Delphi语言最好的JSON代码库 mORMot学习笔记1

    mORMot没有控件安装,直接添加到lib路径, 工程中直接添加syncommons,syndb等到uses里 -------------------------------------------- ...

  3. 在线Json格式化、在线格式化Json代码、Json代码美化器、Json在线压缩、Json \uxxxx格式解码

    Json代码进行美化.格式化.检查Json错误. 也可以进行Json代码压缩处理,提供Json Unicode转换为对应字符!!将json \uxxxx类,格式化相应的中文字符串!Json 待格式化J ...

  4. 详解QQDIY名片json代码

    先看一下json 接下来分析JSON 主要是设置名片背景图 第七行:"content": "https://res.abeim.cn/qq"这里的链接是图片直链 ...

  5. c语言解析json代码举例,CJSON 实例

    cJSON: 一个用c写的一个简单好用的JSON解析器 cJSON库 1.json的数据结构 c语言中json数据是采用链表存储的 typedef struct cJSON { struct cJSO ...

  6. 如何用AE导出程序员可以复用的Json代码

    对于动效设计相信大家都并不陌生了,很多UI设计师为了使自己更加专业也会自学一些动效设计软件. 直接开门见山我想讲的是After Effects After Effects非常牛逼的图形视频处理软件,能 ...

  7. vscode vue settings.json 代码格式化配置!自定义设置 VSCode代码颜色设置(霸霸看了都说好)

    配置 VS Code 文件 -> 首选项 -> 设置 -> 用户设置栏 -> 扩展 -> Vetur 打开文件加入如下配置: {// tab 大小为2个空格"e ...

  8. 驾考试题的json代码

    {"statusCode": "000000","desc": "请求成功","result": [ ...

  9. java json解析 代码_Java构造和解析Json数据的两种方法详解一

    在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Jso ...

最新文章

  1. 谷歌入华,抢在搜索之前的是Waymo无人驾驶
  2. MongoDB_限制集(Capped)
  3. 关于复选框选中状态的判断
  4. CSS3选择器(二)--表单
  5. 全奖博士招生,荷兰根特大学 ​IDLab 实验室,手语手势识别方向
  6. ADO RecondsetPtr 以及如何实现对表的增加删除数据
  7. c语言用指针删除链表free,leetcode剑指 Offer 18(删除链表的节点)--C语言实现
  8. 利用深度迁移学习进行基于图像的植物病害识别
  9. git学习中遇到的疑难杂症
  10. arcgis绘制shp文件
  11. 一个字等于多少字节?
  12. 从产品驱动看专注和结果导向的关系
  13. java entropy_java面试
  14. CXPlain: Causal Explanations for Model Interpretation under Uncertainty
  15. 堡垒机Windows远程桌面连接服务器黑屏解决
  16. 《Effective STL》 读书笔记
  17. 单点登录 Ucenter 分析
  18. Jmeter导出性能测试报告
  19. ROS path问题解决方案
  20. 滴答顺风车怎么抢90%以上的订单_顺风车这样做才是对的,其他都是扯淡!

热门文章

  1. vue-recaptcha 谷歌机器人验证
  2. 【改】[火光摇曳]神奇的伽玛函数(上)——markdown排版
  3. python做日历牌_2021年来了,从Python定制一份日历开始吧!
  4. 论文研读-多目标优化中的多源选择迁移框架
  5. eclipse项目出现红色叉叉解决方案
  6. 通过kiwix浏览wikipedia
  7. mac 投影android手机屏幕尺寸,mac电脑投屏到投影仪的方法(苹果投屏到电脑屏幕图文教程详解)...
  8. 程序员正确打开碎片时间的方法
  9. ecshop后台首页mysql_ecshop 添加后台页面以及设置权限
  10. 新手小白如何短时间内熟练运营微信公众号