zoukankan      html  css  js  c++  java
  • JsonProperties对模型返回的应用

    在采用springMvc+Mybatis的架构中。数据库已经建好,数据库和需要返回的实体共用一个model。一切都井然有序,看起来很美好。

    返回的代码都如下这样

    @RequestMapping("/doxx.do")
    @ResponseBody
    public doxxx(String param){
        Map<String,Object> resultMap=new HashMap();      
        ....
         ModelA model=modelService.doJob(param);
         resultMap.put("data",model);
         return resultMap;
    }
    
    class Model{
    
         private String nameA;
    
         private Date nameB;
    
        ...
    }
        

    这时候,客户端同学突然对我这个后台说:“亲,这个model我们想复用另一个工程里面现有的,内容都是一样的,就是一些变量名要改,timestamp要变成yyyy-MM-dd的字符串。请给我们返回这样的格式哟~”。

    呦你妹啦,由于controller 是直接把model放到requestMap里面的,难道要我重新拼一个对象,把数据都转换一遍,这代码就太丑了。那我从头改数据库和model,全部改一遍?这也太麻烦了,时间也不一定允许,这不是坑爹么!

    然而事实证明,我果然是too young too simple。问了同事之后发现,这样的情况其实很好解决,只要简单的加个注解,做一点点修改,就可以完成。所以在这里记录一下,强调一下自己的无知,把自己钉在历史的耻辱柱上,没事就回来看看~

    1.对于变量名的变化

      @JsonProperty("name_A")
      private String nameA;

    这样就可以把原本返回的nameA变成name_A。而在代码内部,则仍是按照nameA来使用,简单整洁

    2.对于变量类型的变化

    稍微麻烦一点,但是仍很简便

    @JsonSerialize(using = CustomDateSerializer.class)
        private Date updateTime;
    
    /********另一个文件*********************/
    public class CustomDateSerializer  extends JsonSerializer<Date> {
        @Override
        public void serialize(Date value, JsonGenerator gen, SerializerProvider serializers) throws IOException, JsonProcessingException {
            if (value != null) {
                gen.writeString(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(value));
            }
        }
    }

    通过自定义的序列化方法,可以有很高自由度的更改返回的数据内容。上面的就是把date变为 yyyy-MM-dd HH:mm:ss 返回

    3.对于model中不想返回的变量

    这个就很简单啦

      @JsonIgnore
        private Date createTime;

    加上JsonIgnore就不会返回啦。

    虽说都不是什么难理解的高深技术,但是这些小技巧对于工作中提高效率真的很有帮助,多学多看,多写多问。

    好久没写博客了,以后还是要抽空来写,多多学习~

  • 相关阅读:
    FFMPEG音视频基础问题和被面试问到的东西
    OpenGL学习
    FFMPEG起航之旅
    SurfaceView、TextureView对比和学习
    对文件拷贝、删除操作、对时间的计算以及转化
    音视频开发
    企业级Android应用架构设计与开发
    屏幕分辨率的适配&&开发文档的介绍
    设计模式的学习
    自定义Dialog的模版
  • 原文地址:https://www.cnblogs.com/mamuluke/p/5702040.html
Copyright © 2011-2022 走看看