zoukankan      html  css  js  c++  java
  • Spring MVC灵活控制返回json的值(自定义过滤字段)

    在使用spring MVC开发过程中,为了提高项目执行效率,所以在一些外键字段的实体中会注解”@ManyToOne(fetch = FetchType.LAZY)”以实现延迟加载的效果。

    但是,在使用ajax请求数据,当需要返回的序列化数据中包含延迟加载的属性时,会出现错误,延迟加载的属性无法进行序列化。在这个时候,我们需要暂时取消延迟加载,以取到所有需要的数据。

    可是,这样又会造成一堆垃圾数据的产生、序列化、传递至前台。

    所以需要在控制层进行数据过滤,只序列化需要的数据。

    具体过滤方法如下:

    String jsonString = "";
    ObjectMapper objectMapper = new ObjectMapper();
    //过滤懒加载属性
    objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS,false);
    //过滤后时间属性格式
    objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
                                   //设置需要保留的字段(id,memberId.name,orderId.serviceTime)
    objectMapper.setFilters(JsonFilterUtil.getFilterOut("id","memberId","name","orderId","serviceTime"));
    objectMapper.addMixIn(TourRecord.class,JsonFilterUtil.getObjectFilterMinIn());
    //需要过滤的外键类型
    objectMapper.addMixIn(Member.class,JsonFilterUtil.getObjectFilterMinIn());
    objectMapper.addMixIn(Order.class,JsonFilterUtil.getObjectFilterMinIn());
    try {
       //序列化数据
        jsonString = objectMapper.writeValueAsString(tourRecords);
    } catch (JsonProcessingException e) {
        e.printStackTrace();
    }
    map.put("tourList", jsonString);

    要实现过滤json返回数据的方式有很多种,有兴趣的同学可以去看看

  • 相关阅读:
    OK335xS-Android mkmmc-android-ubifs.sh hacking
    OK335xS-Android pack-ubi-256M.sh hacking
    OK335xS Ubuntu 12.04.1 版本 Android 开发环境搭建
    Qt Quick Hello World hacking
    Qt QML referenceexamples attached Demo hacking
    QT 5.4.1 for Android Ubuntu QtWebView Demo
    I.MX6 working note for high efficiency
    QT 5.4.1 for Android Windows环境搭建
    mkbootimg hacking
    Generate And Play A Tone In Android hacking
  • 原文地址:https://www.cnblogs.com/meng-ma-blogs/p/7798315.html
Copyright © 2011-2022 走看看