精华内容
下载资源
问答
  • package com.zhoujianpeng.project.response; public class RestResponse<T> { private int code; private String msg;... * 分别提供返回成功和失败的不同的方法 * 也就是说返回数据...
    package com.zhoujianpeng.project.response;
    
    public class RestResponse<T> {
    
        private int code;
        private String msg;
        private T data;
    
    
        /**
         * 分别提供返回成功和失败的不同的方法
         * 也就是说返回的数据形式是RestResponse所包含的
         * d第一个T :泛型方法的标示,没有实际的意义
         * 第二个返回的数据类型的一种规范
         *这也就是所谓的工厂模式的应用,
         */
    
        public static <T> RestResponse<T> success() {
            return new RestResponse<>();
        }
    
        public static <T> RestResponse<T> success(T data) {
            RestResponse restResponse = new RestResponse();
            restResponse.setData(data);
            return restResponse;
        }
    
        public static <T> RestResponse<T> error(RestCode restCode) {
            RestResponse<T> restResponse = new RestResponse<>(restCode.code, restCode.msg);
            return restResponse;
        }
    
        public RestResponse() {
            //默认会调用有参的构造函数,默认是成功的
            this(RestCode.OK.code, RestCode.OK.msg);
        }
    
        public RestResponse(int code, String msg, T data) {
            this.code = code;
            this.msg = msg;
            this.data = data;
        }
    
        public RestResponse(int code, String msg) {
            this.code = code;
            this.msg = msg;
        }
    
    
        public RestResponse(T data) {
            this.data = data;
        }
    
        public int getCode() {
            return code;
        }
    
        public void setCode(int code) {
            this.code = code;
        }
    
        public String getMsg() {
            return msg;
        }
    
        public void setMsg(String msg) {
            this.msg = msg;
        }
    
        public T getData() {
            return data;
        }
    
        public void setData(T data) {
            this.data = data;
        }
    }
    
    package com.zhoujianpeng.project.response;
    
    /**
     * 返回的code以及返回的message
     */
    public enum  RestCode {
    
        OK(0, "OK"),
        UNKNOW_ERROR(1, "服务异常"),
        WRONG_PAGE(10100, "页码不存在"),
        ;
    
        RestCode(int code, String msg) {
            this.code = code;
            this.msg = msg;
        }
    
        public int code;
        public String msg;
    
        public int getCode() {
            return code;
        }
    
        public void setCode(int code) {
            this.code = code;
        }
    
        public String getMsg() {
            return msg;
        }
    
        public void setMsg(String msg) {
            this.msg = msg;
        }
    
    }
    

    可以参考一下别人的这个文章https://blog.csdn.net/OrangeChenZ/article/details/86468642

    展开全文
  • 主要运用了,枚举类,实体及返回前端方法类 枚举类我们可以随便定义我们的code和massage 代码纯属本人个人想法,不足之处还请大家多补充 Result实体类 package org.inlighting.handwritingjwt; import lombok.Data;...

    现在好多公司都是前后端分离开发的项目,那么我们后端会统一给前端返回统一的返回值。一方面是后端代码接口返回值的统一,一方面是前端好理解及查看后端返回的值,那么接下来我将会写一下我在公司里所用到的统一返回值的代码。

    主要运用了,枚举类,实体及返回前端方法类
    枚举类我们可以随便定义我们的code和massage
    代码纯属本人个人想法,不足之处还请大家多补充

    Result实体类

    package org.inlighting.handwritingjwt;
    
    import lombok.Data;
    import lombok.Getter;
    import lombok.Setter;
    import java.io.Serializable;
    
    /**
     * description:返回前端实体类
     * date: 2020/9/23 21:19
     * @author 于嘉琪
     */
    @Data
    @Getter
    @Setter
    public class Result<T> implements Serializable {
        private String returnCode;
        private String message;
        private T data;
    
        public Result(String code, String msg) {
            this.returnCode = code;
            this.message = msg;
        }
    
        public Result(String code, String msg, T data) {
            this.returnCode = code;
            this.message = msg;
            this.data = data;
        }
    }
    

    ResultCode枚举

    package org.inlighting.handwritingjwt;
    
    /**
     * description:
     * date: 2020/9/23 21:26
     * @author yujiaqi
     */
    public enum ResultCode {
        // 根据业务需要补充相应的状态码及对应的提示信息,此处作简单罗列
        OK("000000", "操作成功"),
        NOPARAMETER("E10002", "参数为空"),
        NOAUTH("E10003", "暂无接口调用权限"),
        ERROR("E10001", "系统内部异常");
    
        private String code;
        private String msg;
    
        ResultCode(String code, String msg) {
            this.code = code;
            this.msg = msg;
        }
    
        /**
         * 根据code值获取对应的消息
         *
         * @param code 状态码
         * @return 消息
         */
        public static String getMsgByCode(String code) {
            String msg = "";
            ResultCode[] resultCodes = values();
            for (ResultCode resultCode : resultCodes) {
                if (code.equals(resultCode.code)) {
                    msg = resultCode.msg;
                }
            }
            return msg;
        }
    
        public String getCode() {
            return code;
        }
    
        public String getMsg() {
            return msg;
        }
    }
    

    ResponseEntity类

    package org.inlighting.handwritingjwt;
    
    /**
     * 返回前端方法类
     *
     * @author Yujiaqi
     * @date 2020/12/15 16:30
     */
    public class ResponseEntity {
        
        public static Result success() {
            return new Result(ResultCode.OK.getCode(), ResultCode.OK.getMsg());
        }
        
        public static <T> Result success(T data) {
            return new Result(ResultCode.OK.getCode(), ResultCode.OK.getMsg(), data);
        }
        
        public static Result error() {
            return new Result(ResultCode.ERROR.getCode(), ResultCode.ERROR.getMsg());
        }
        
        public static Result error(String code) {
            return new Result(code, ResultCode.getMsgByCode(code));
        }
        
        public static Result error(String code, String msg) {
            return new Result(code, msg);
        }
        
        public static <T> Result error(String code, T data) {
            return new Result(code, ResultCode.getMsgByCode(code), data);
        }
    }
    
    

    main方法测试

    public static void main(String[] args) {
       	Result success = ResponseEntity.success();
        System.out.println(success);
        System.out.println("---------------------");
        TestEntity testEntity = new TestEntity();
        testEntity.setId(1);
        testEntity.setName("测试名称");
        Result success1 = ResponseEntity.success(testEntity);
        System.out.println(success1);
        System.out.println("---------------------");
        Result error = ResponseEntity.error();
        System.out.println(error);
        System.out.println("---------------------");
        Result e10002 = ResponseEntity.error("E10003");
        System.out.println(e10002);
        Result e10003 = ResponseEntity.error(ResultCode.NOAUTH.getCode());
        System.out.println(e10003);
        System.out.println("---------------------");
        Result error1 = ResponseEntity.error("EEEEEE", "自定义返回码及返回信息");
        System.out.println(error1);
        Result error2 = ResponseEntity.error(ResultCode.NOAUTH.getCode(), ResultCode.NOAUTH.getMsg());
        System.out.println(error2);
        System.out.println("---------------------");
        Result error3 = ResponseEntity.error(ResultCode.NOPARAMETER.getCode(), testEntity);
        System.out.println(error3);
    }
    

    结果:
    在这里插入图片描述

    展开全文
  • 用Hibernate查询数据的时候,往往是查询了一个bean的数据,然后将这个bean的数据转成json,假设这个Bean有100个属性,但是页面只需要10个属性的数据,无效的数据就会占用大部分的带宽。而做这个黑白名单的过滤就是...

    用Hibernate查询数据的时候,往往是查询了一个bean的数据,然后将这个bean的数据转成json,假设这个Bean有100个属性,但是页面只需要10个属性的数据,无效的数据就会占用大部分的带宽。而做这个黑白名单的过滤就是减少无效数据的传输。

    使用的jar包是jackson-databind.jar

    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    
    import com.fasterxml.jackson.databind.JsonNode;
    import com.fasterxml.jackson.databind.node.ArrayNode;
    import com.fasterxml.jackson.databind.node.ObjectNode;
    
    public class AjaxResult {
    
        private JsonNode node = null;
        //白名单
        private List<String> whites = new ArrayList<String>();
        //黑名单
        private List<String> blacks = new ArrayList<String>();
    
        public AjaxResult(JsonNode node) {
            this.node = node;
        }
    
        /**
         * 加入白名单属性
         * @param props
         * @return
         */
        public AjaxResult whitesProps(String...props) {
            for(String prop:props) {
                if(whites.contains(prop)) continue;
                this.whites.add(prop);
            }
            return this;
        }
    
        /**
         * 加入黑名单属性
         * @param props
         * @return
         */
        public AjaxResult blacksProps(String...props) {
            for(String prop:props) {
                if(blacks.contains(prop)) continue;
                this.blacks.add(prop);
            }
            return this;
        }
    
    
        /**
         * 过滤
         * @return
         */
        public JsonNode filter() {
            //判断JsonNode是ObjectNode还是ArrayNode
            if(this.node instanceof ArrayNode) {
                node = (ArrayNode)node;
                ArrayNode copyNodes = ((ArrayNode) node).deepCopy();
                for(int i = 0;i < copyNodes.size();i++) {
                    JsonNode copyNode = copyNodes.get(i);
                    whitesFilter((ObjectNode)copyNode);
                    blacksFilter((ObjectNode)copyNode);
                }
                return copyNodes;
            }else {
                node = (ObjectNode)node;
                ObjectNode copyNode = node.deepCopy();
                whitesFilter((ObjectNode)copyNode);
                blacksFilter((ObjectNode)copyNode);
                return copyNode;
            }       
        }
    
        /**
         * 白名单过滤
         * @param objectNode
         * @return 判断objectNode中的属性是否在whites中,如果不存在,就把这个元素从objectNode中移除
         */
        public void whitesFilter(ObjectNode objectNode) {
            if(this.whites.isEmpty()) return;
            Iterator<String> iter = objectNode.fieldNames();
            while(iter.hasNext()) {
                String fieldName = iter.next();
                if(!this.whites.contains(fieldName)) {
                    iter.remove();  
                }
            }
        }
    
        /**
         * 黑名单过滤
         * @param objectNode
         * @return 判断objectNode中的属性是否在blacks中,如果存在,就把这个元素从objectNode中移除
         */
        public void blacksFilter(ObjectNode objectNode) {
            if(this.blacks.isEmpty()) return;
            Iterator<String> iter = objectNode.fieldNames();
            while(iter.hasNext()) {
                String fieldName = iter.next();
                if(this.blacks.contains(fieldName)) {
                    iter.remove();
                }
            }
        }
    }

    单元测试

    import org.junit.Test;
    
    import com.fasterxml.jackson.databind.JsonNode;
    import com.fasterxml.jackson.databind.ObjectMapper;
    import com.fasterxml.jackson.databind.node.ArrayNode;
    import com.fasterxml.jackson.databind.node.ObjectNode;
    
    import utils.AjaxResult;
    import utils.JsonHelper;
    
    public class TestAjaxResult {
    
        @Test
        public void testFilterJsonNode() {
            ObjectMapper mapper = new ObjectMapper();
            ObjectNode objectNode = mapper.createObjectNode();;
            objectNode.put("name","test");
            objectNode.put("age",10);
            AjaxResult ajaxResult = new AjaxResult(objectNode);
            ajaxResult.blacksProps("name");
            ObjectNode objectNode2 = (ObjectNode) ajaxResult.filter();
            Iterator<String> iter = objectNode2.fieldNames();
            while(iter.hasNext()) {
                String key = iter.next();
                System.out.println(key +"-->"+objectNode2.get(key));
            }
        }
    
        @Test
        public void testWhiteFilter() {
            ObjectMapper mapper = new ObjectMapper();
            ObjectNode whiteNode = mapper.createObjectNode();
            whiteNode.put("name","test");
            whiteNode.put("age",10);
            ArrayNode arrayNode = mapper.createArrayNode();
            arrayNode.add(whiteNode);
            arrayNode.add(whiteNode);
            AjaxResult ajaxResult = new AjaxResult(arrayNode);
            ObjectNode result = mapper.createObjectNode();
            result.put("Succ",1);
            ArrayNode content = result.putArray("content");
            content.addAll((ArrayNode) ajaxResult.whitesProps("age").filter());
            System.out.println(result.toString());
        }
    }

    测试结果:
    这里写图片描述

    这里写图片描述

    展开全文
  • SpringMVC 统一返回JSON格式数据前端

    千次阅读 2018-04-10 18:02:30
    有时在APP做接口功能的时候,都是返回JSON格式的数据,所以最好的只好在工程设置一个统一数据返回方式 在SpringMVC 直接配置XML可以产生这种配置,比较简单 Spring的版本我用的是4.3.3的&lt;bean id="...

    有时在给APP做接口功能的时候,都是返回JSON格式的数据,所以最好的只好在工程设置一个统一的数据返回方式

            

            在SpringMVC 直接配置XML可以产生这种配置,比较简单

            Spring的版本我用的是4.3.3的

    <bean id="mappingJacksonHttpMessageConverter"

        class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">

    <property name="supportedMediaTypes">

    <list>

    <value>application/json</value>

    <value>application/javascript</value>

    <value>text/json</value>

    <value>text/javascript</value>

    </list>

    </property>

    </bean>


    <bean id="httpMessageConverter"

            class="org.springframework.http.converter.StringHttpMessageConverter">

    <property name="supportedMediaTypes">

    <list>

    <value>text/plain;charset=UTF-8</value>

    </list>

    </property>

    </bean>


    <!-- 统一返回JSON格式数据 -->

    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">

    <property name="messageConverters">

    <list>

    <ref bean="httpMessageConverter" />

    <ref bean="mappingJacksonHttpMessageConverter" />

    </list>

    </property>

    </bean>

    那么接口方法 你就可以随便返回数据了


    @RequestMapping("/user/list")

    @ResponseBody

    public List getSelectAll(Model model) throws Exception {

    List list = null;

    try {

    list = userService.selectAll();

    model.addAttribute("result", list);


    } catch (Exception e) {

    e.printStackTrace();

    }

    return list;

    }

    展开全文
  • java通过调取接口 返回带有时间戳的JSON数据, 如何通过时间戳处理数据, 比如我要 查询2016-6-00到2016-7-00 中间的数据 所有数据都有返回
  • 但在我们实际开发过程中我们可能会遇到一些例外情况无法按照统一json数据格式返回给前端页面或接口调用方。博主在调试微信公众号后台数据接口的时候用的之前的框架就遇到这样的问题,需按照接口调用方约定的内容...
  • 返回统一的JSON数据格式一、统一返回JSON数据格式1. 列表数据2.分页数据3.没有返回数据4.失败统一定义格式二、创建统一结果返回类1. 创建接口定义返回码2. 创建结果类3. Controller中的返回统一数据格式的JSON举例...
  • 统一返回json数据封装

    2020-06-29 09:06:48
    但是这样的json串在前后端分离使用中并不满足实际的效果,因此需要进行相应的封装,以满足前端能够正确处理获取的数据。 导入依赖(使用阿里的fastjson) <dependency> <groupId>com.alibaba</...
  • 前端优雅的处理接口返回的Josn数据中有null值的情况,再也不用写一堆非空校验了
  • 通过从服务器获取数据,客户出需求,形成怎样的表格,多样化的静态图和动态图,各种各样资源文件,这些需求都不是简单的从数据库中取出来就可以直接使用的,往往需要进行对应的算法归类,类别划分等。对于复杂的...
  • 概要二 @RestController注解三 常用数据类型转为 JSON 格式3.1 创建 User 实体类3.2 创建 Controller 类3.3 测试不同数据类型返回的 JSON3.4 Jackson 中对 null 的处理四 使用 fastjson 封装统一返回数据结构4.1 ...
  • * @DESCRIPTION 统一API响应结果封装 */ public class RestResult { public void setCode(int code) { this.code = code; } private int code;//状态码 private String message;//消息 private Object ...
  • 当在filter中出现系统异常时,如何定制化返回数据(比如返回给客户端json数据) 需求描述: 一般的情况下Spring中的@ExceptionHandler注解用于统一处理在Controller层抛出的异常。二通常情况下在项目中会使用到很...
  • ajax处理返回json数据

    千次阅读 2019-09-28 19:11:43
    1、返回json字符串:  /** 将一个字符串输出到浏览器 */ protected void writeJson(String json) { PrintWriter pw = null; try { servletResponse.setContentType("text/plain;charset=UT...
  • @RestController public class ErrorHandler implements ErrorController { private final ErrorAttributes errorAttributes; ResultMsg resultMsg = new ResultMsg(); @PostConstruct public void init() { ...
  • 首先是静态资源的处理,关于这个之前有写文章单独讲过,这里不再重复写,不太清楚的童鞋可以移步查看接着需要统一JSON返回格式,和前端工程师约定,对于字符串类型和日期类型都返回字符串,而对于普通数字类型的话...
  • 返回给前端json,long转string

    千次阅读 2019-03-20 15:12:31
    * 将返回给前端的Long和long,统一转化成字符串 * * @return */ @Bean public MappingJackson2HttpMessageConverter longToStringConverter ( ) { MappingJackson2HttpMessageConverter converter ...
  • 本篇文章主要介绍了解决SpringMVC 返回Java8 时间JSON数据的格式化问题处理,小编觉得挺不错的,现在分享大家,也大家做个参考。一起跟随小编过来看看吧
  • SpringBoot开发中实现对前端返回数据的一致及错误异常统一处理 我们要做的事向前端返回的统一的json格式的数据,在这里定义一个通用的返回类 //统一返回 public class CommonReturnType { //表名请求的返回处理...
  • SpringBoot如何设置统一返回json格式数据 这个方法也适于一般的Spring项目,只不过我目前的项目是SpringBoot为框架 我们需要将结果数据显示在前段页面上,所以我们会将响应封装成json返回,一般我们会将所有接口的数据...
  • 前后端分离优雅的返回Json数据统一返回数据格式背景测试环境springboot2.2.4需要依赖(测试用,与格式规范无关)一、实现步骤1、创建一个存放公共返回码的枚举类型2、创建一个Result类封装返回数据2、分页展示工具类...
  • 开发过程中,接口与接口之间,前后端之间数据的传输都使用 JSON 格式 一、JSON简介 文章开始之前,我们先简单回顾一下JSON的概念 参考自官方JSON中文说明以及JSON维基百科 (1)名称: JSON(JavaScript Object ...
  • 后端传前端数据乱码(返回json字符串到前端) 中文乱码的问题,在开发过程中难免会遇到,而在配置好编码之后,不管是数据库,还是其他地方都配置好统一UTF-8编码之后,后端从数据库取出数据传回前端...
  • Spring Boot 返回 JSON 数据数据封装

    万次阅读 多人点赞 2019-03-06 17:26:59
    文章目录2.1 @RestController 注解2.2 常用数据类型转为 JSON 格式2.2.1 创建 User 实体类2.2.2 创建 Controller 类2.2.3 测试不同数据类型返回JSON2.2.4 Jackson 中对 null 的处理2.3 使用 fastjson2.3.1 ...
  • 今天在改一个bug 情况:  在spring boot中写了一个类Result ,用来统一封装 各个API响应结果 , ... 但遇到一些异常的情况,返回给前端的结果却是json对象数据,key少了双引号,前端无法正确解析 从一开始...
  • springboot返回json数据对属性为null值的处理 参考网址: https://mp.weixin.qq.com/s/y7RXiF9ENxYnLWN_jdWbRg Spring Boot返回Json数据及数据封装 本来已收录到我写的10万字Springboot经典学习笔记中,笔记在持续...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 33,551
精华内容 13,420
关键字:

统一处理返回给前端的json数据