我是靠谱客的博主 尊敬手套,最近开发中收集的这篇文章主要介绍通过FastJson高级特性隐藏和显示指定字段,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一 概述

我们在后台开发中会使用一些Entity来实现字段返回Model的构造,或者是与数据库对应Model的构造,对于不同场景会存在一些命名规则,如使用VO,BO,DTO,POJO等命名方式来实现不同场景Model的构造。

除此之外,为了节省带宽或者是出于安全性考虑,我们可以将一些字段隐藏掉,此时用们就可以利用FastJson中的一些高级特性来实现。

二 利用FastJson的高级特性实现隐藏和现实指定字段

1. 隐藏指定字段


@FastJsonView(exclude =
@FastJsonFilter(clazz = CouponEntity.class,props = {"id"})
)

如上示例,返回的Model为CouponEntity,返回时将其中的字段id隐藏掉。

2. 显示指定字段


@FastJsonView(include =
@FastJsonFilter(clazz = CouponEntity.class,props = {"name"})
)

如上示例,返回的Model同样为CouponEntity,返回时只是返回字段name。

三 FastJson相关源码介绍

注解@FastJsonView源码

package com.alibaba.fastjson.support.spring.annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface FastJsonView {
FastJsonFilter[] include() default {};//包括哪些字段
FastJsonFilter[] exclude() default {};//排除哪些字段
}

如源码所示,返回的是FastJsonFilter数组。

注解@FastJsonFilter源码

package com.alibaba.fastjson.support.spring.annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target({ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface FastJsonFilter {
Class<?> clazz();//该参数指定Model
String[] props();//该参数指定显示或者隐藏哪些字段
}

如源码所示,Model可以时任意类,同时返回参数为String类型的数组。

最后

以上就是尊敬手套为你收集整理的通过FastJson高级特性隐藏和显示指定字段的全部内容,希望文章能够帮你解决通过FastJson高级特性隐藏和显示指定字段所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部