spring json使用的扩展

在springmvc中的想要接收json格式报文,一般是使用@RequestBody映射到实体类或者HttpServletRequest自己读取处理,增加自定义参数处理器,用来更灵活的处理json

请求格式

{
    "id": "11",
    "name": "hi"
}
    @RequestMapping("/getParameterByDefaultKey")
    @ResponseBody
    public String getParameterByDefaultKey(@JsonRequest Long id, @JsonRequest String name) {
        return id + "," + name;
    }

或者

    @RequestMapping("/getParameterByPath")
    @ResponseBody
    public String getParameterByPath(@JsonRequest("$.id") Long id, @JsonRequest("$.name") String name) {
        return id + "," + name;
    }

两种写法效果相同,value里可以定义其他jsonpath语法
jsonpath使用方法
支持默认参数

    @RequestMapping("/getParameterByDefaultValue")
    @ResponseBody
    public String getParameterByDefaultValue(@JsonRequest(defaultValue = "0") Long id, @JsonRequest String name) {
        return id + "," + name;
    }

支持直接获取参数中包含的jsonobject
请求参数

{
    "id": "11",
    "name": "qqq",
    "body": {
        "id": "222"
    }
}
    @RequestMapping("/getJsonObject")
    @ResponseBody
    public String getJsonObject(@JsonRequest JSONObjectWrapper body) {
        logger.info(body.toString());
        return body.getJSONObject().getString("id");
    }

支持获取全部json

    @RequestMapping("/getAllJsonObject")
    @ResponseBody
    public String getAllJsonObject(@JsonRequest JSONWrapper name) {
        logger.info(name.toString());
        return name.getJSONObject().getString("id");
    }

支持将json中的jsonobject映射为bean

    @RequestMapping("/getBean")
    @ResponseBody
    public String getUserByJson7(@JsonRequest Body body) {
        return String.valueOf(body.getId());
    }

支持直接获取json中的jsonarray

    @RequestMapping("/getJsonArray")
    @ResponseBody
    public String getJsonArray(@JsonRequest JSONArrayWrapper array) {
        JSONObject jsonObject = array.getJsonArray().getJSONObject(0);
        return jsonObject.getString("name");
    }

当然也支持多种参数混合获取
请求参数

{
    "id": "11",
    "name": "qqq",
    "body": {
        "id": "222"
    },
    "array": [
        {
            "name": "item1"
        },
        {
            "name": "item2"
        }
    ]
}
    @RequestMapping("/getJsonArrayAndBean")
    @ResponseBody
    public String getJsonArrayAndBean(@JsonRequest JSONArrayWrapper array,@JsonRequest Body body) {
        JSONObject jsonObject = array.getJsonArray().getJSONObject(0);
        return jsonObject.getString("name")+","+body.getId();
    }

项目地址

欢迎star -

拓展阅读:
springmvc 参数绑定
springmvc 参数绑定源码分析
springmvc 自定义参数转换器

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,258评论 19 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,222评论 6 342
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,913评论 25 709
  • 李: 最近一个人闲在家里的时候偶尔会坐在地板上,开始像个老年人一样一点一滴回想过去这些年里发生的所有事,想把所有细...
    小九九九诶阅读 1,477评论 0 0
  • ~壹~ 看过古典名著《红楼梦》一书的人都知道刘姥姥这个人物,书中描写她曾三进贾府,那么她又是如何完成脱贫致富的呢?...
    玉垚锦瑟阅读 3,607评论 2 8

友情链接更多精彩内容