统一的Json组件和csv下载组件

简介:

java-web-common

java-web-common

Json组件

目标和用途

  • 规范Json接口格式
  • Controller中一律返回Java object,组件将自动转换数据格式,满足Json接口格式
  • 统一处理Json接口中出现的异常,controller中不再需要try-catch.Spring只有针对页面请求的SimpleMappingExceptionResolver异常解决方案,并没有针对使用@ResponseBody的方法异常处理

如何使用

  • 在Spring配置文件中增加:<context:component-scan base-package="ren.wenchao.web.common, your-controller-packages" />
  • 不需要配置<mvn:annotation-driven/>
  • 在需要返回Json的Controller的方法上标注:@JsonResponseBody 注解,默认是V2版本。可以参考TestController.java文件

示例

示例1

  @RequestMapping(value = "/testJsonResponceBodyV2ReturnMap")
   @JsonResponseBody(version = JsonResponseBody.Version.V2)
   public Map testJsonResponceBodyV2ReturnMap() {
       HashMap<Object, Object> hashMap = Maps.newHashMap();
       hashMap.put("key", "value");
       return hashMap;
   }

返回:

{
    "code":0,
    "msg":"",
    "data":{
        "key":"value"
    }
}

示例2

    @RequestMapping(value = "/testJsonResponceBodyV1WithException")
    @JsonResponseBody(version = JsonResponseBody.Version.V1)
    public List<String> testJsonResponceBodyV1WithException() {
        throw new RuntimeException("some exception");
    }

返回:

{
    "ret":false,
    "msg":"some exception"
}

更多示例请参考:TestController.java

CSV组件

目标和用途

  • 提供一个统一的CSV文件下载功能,各个系统就不需要重复编写了
  • 简化「cvs下载功能」的实现

如何使用

  • 假设你的业务model为Payload,有可能你最终需要的csv的列和业务model Payload的属性不完全一致,
    因此你需要创建一个SomeCSVPayload(名字随意)来实现BaseCSVPayload接口,并制定csv的列头等信息
  • 在对应的Controller方法上增加@CSVResponceBody(fileName = "output", payloadClass = SomeCSVPayload.class),如下:
    @RequestMapping(value = "/testCSVResponceBody")
    @CSVResponceBody(fileName = "output", payloadClass = SomeCSVPayload.class)
   public SomeCSVPayload testCSVResponceBody() {
       return new SomeCSVPayload();
   }      

示例使用请查看TestController.java中的testCSVResponceBody方法

Excel组件

暂时没打算支持Excel下载,因为Excel需要区分版本,不同版本的限制也有些不同,而CSV比较通用,因此目前只支持csv

目录
相关文章
|
6月前
|
XML 存储 JSON
Python学习 -- 常用数据交换格式(CSV、XML、JSON)
Python学习 -- 常用数据交换格式(CSV、XML、JSON)
80 0
|
2月前
|
JSON 前端开发 JavaScript
java中post请求调用下载文件接口浏览器未弹窗而是返回一堆json,为啥
客户端调接口需要返回另存为弹窗,下载文件,但是遇到的问题是接口调用成功且不报错,浏览器F12查看居然返回一堆json,而没有另存为弹窗; > 正确的效果应该是:接口调用成功且浏览器F12不返回任何json,而是弹窗另存为窗口,直接保存文件即可。
112 2
|
22天前
|
SQL 分布式计算 Java
大数据-96 Spark 集群 SparkSQL Scala编写SQL操作SparkSQL的数据源:JSON、CSV、JDBC、Hive
大数据-96 Spark 集群 SparkSQL Scala编写SQL操作SparkSQL的数据源:JSON、CSV、JDBC、Hive
23 0
|
26天前
|
存储 JSON 数据格式
Python 输入输出与文件处理: io、pickle、json、csv、os.path 模块详解
Python 输入输出与文件处理: io、pickle、json、csv、os.path 模块详解
26 0
|
4月前
|
JSON JavaScript 数据格式
vue 处理JSON文件——上传导入、下载导出、在线预览
vue 处理JSON文件——上传导入、下载导出、在线预览
107 7
|
4月前
|
内存技术
文本,wangEditor下载失败,nvm降级到17.0.0,可能是,如果之前下载了4现在pack.json删除,再重新下
文本,wangEditor下载失败,nvm降级到17.0.0,可能是,如果之前下载了4现在pack.json删除,再重新下
|
5月前
|
JSON 编解码 Apache
Android中使用HttpURLConnection实现GET POST JSON数据与下载图片
Android中使用HttpURLConnection实现GET POST JSON数据与下载图片
54 1
|
4月前
|
JSON JavaScript 数据格式
vue 电子表格Excel的上传导入、导出下载、读取本地Excel、json转Excel
vue 电子表格Excel的上传导入、导出下载、读取本地Excel、json转Excel
301 0
|
6月前
|
JSON 运维 Kubernetes
云效产品使用报错问题之流水线中配置了AppStack,构建时下载的制品内容为json字符串,如何解决
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
6月前
|
存储 JSON API
Python 自动化指南(繁琐工作自动化)第二版:十六、使用 CSV 文件和 JSON 数据
Python 自动化指南(繁琐工作自动化)第二版:十六、使用 CSV 文件和 JSON 数据
122 1

相关实验场景

更多