首页
学习
活动
专区
圈层
工具
发布

聊聊springboot项目如何细粒度控制API响应值

@JsonView是Spring MVC中使用的Jackson注解,用于在序列化和反序列化过程中控制JSON对象的特定字段。例如,该注释可以允许基于上下文仅返回对象的某些字段。...权限控制: 在实现基于角色的访问控制(RBAC)的系统中,不同用户角色可能对同一资源有不同的访问权限。例如,普通用户只能查看某条记录的基本信息,而管理员可以查看所有详情。...示例示例一:在控制器的方法配置@JsonView并绑定视图规则注:本示例以springboot web项目来演示,因为springboot的web包本身就含有Jackson包,因此无需引入其他jar1、...默认情况下,@JsonView 不适用于子对象。如果有嵌套对象并且想要将 @JsonView 应用于它们,则需要手动将 @JsonView 注释添加到子对象的每个字段。...最后Jackson有个@JsonFilter注解也可以实现上述效果,不过它与@JsonView 有所不同,主要适用于更复杂、动态的过滤场景,特别是在需要对对象树中的多个嵌套层级或集合元素进行条件筛选。

44610
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Spring MVC @JsonView使用详解

    Spring 提供了对Jackson 非常好的支持,可以查看此spring-jackson-demo代码来掌握。...这里着重说一下@JsonView的用法 JSON Views 基本用法 @JsonView可以过滤序列化对象的字段属性,可以使你有选择的序列化对象。...下面看一个例子: 首先我们定义一个View类,里面包含我们对“要序列化的字段”的定义,我们暂时归为Summary(摘要)。属于Summary的字段都是我们要序列化的字段。...上面例子我们将Summary指定给了id、firstname、lastname三个属性,这样,当我们使用@JsonView序列化User对象的时候,就只会序列化这三个属性,可以隐藏一些不想序列化的字段属性...,Jackson还有一种更简单的方法:@JsonFilter。

    4.7K30

    Jackson 序列化的隐性成本

    Jackson。Java 生态里最流行的 JSON 库,那个大家几乎不假思索就会用的默认选项。 事情是怎么开始的? 我们有一个标准的 Spring Boot 微服务,很普通。...快速优化一:@JsonView Jackson 有个叫 @JsonView 的特性,可以控制被序列化的字段: public class Views { public static class Basic...真正的问题:反射 Jackson 用反射去检查你的对象、决定如何序列化。 反射很慢。非常慢。 Jackson 每次序列化一个对象时: 1. 检查类结构(有哪些字段) 2....对 90% 的接口仍用 Jackson(流量低、响应复杂) 2. 对中等流量的接口使用 @JsonView(简单优化) 3....的 @JsonView:不用大改就能有快速收益 我们犯过的常见错误 • 错误 1:过度信任默认 Spring Boot 的默认值更偏向开发体验,而非性能。

    18710

    掌握@ControllerAdvice配合RequestBodyAdviceResponseBodyAdvice使用,让你的选择不仅仅只有拦截器【享学Spring MVC】

    本文链接:https://blog.csdn.net/f641385712/article/details/101396307 前言 要么出众,要么出局(stand out or get out)。...可能你第一反应想到的是使用Spring MVC的HandlerInterceptor拦截器来做,没毛病,相信大部分公司的同学也都是这么来干的。...JsonViewRequestBodyAdvice Spring MVC的内置实现,它支持的是Jackson的com.fasterxml.jackson.annotation....同时也着重介绍了@JsonView的使用:它可以放入参时接收指定的字段;也可以让返回值中敏感字段(如密码、盐值等)不予返回,可做到非常灵活的配置和管理,实现一套代码多处使用的目的,提高集成程度。...注解标注了才会生效,起到拦截的效果 它只能作用于基于消息转换器的请求/响应(参考注解@RequestBody/@ResponseBody) 当然,只能作用于@RequestMapping模式下的处理器模型上

    8K43

    spring mvc为什么默认使用jackson而不选择fastjson

    2. spring mvc默认选择的jackson 现在回头看下Jackson, 参考下MappingJackson2HttpMessageConverter用法, 基本都是重用一个ObjectMapper...对象转为json串忽略字段,别名等基本比较依赖对象类使用注解@JsonProperty, @JsonIgnore, @JsonView等。...用的时候有时感觉不是太爽, 一个pojo类, 不同时候可能返回不同的json字段, 这样就需要在pojo加入很多jackson的注解JsonProperty, JsonView等, 侵入性有些强; 如果第三方的...那spring mvc为什么还是选择了jackson作为默认的json库呢? 主要的原因应该是jackson功能全面, 相对稳定, 可定制化一些。...spring mvc, spring boot, spring security里面json默认都是jackson处理, 如果不想多配置, jackson也将就着, 综合看它应该相对全面些稳些。

    2.1K20

    前端妹子说:你是个好人,但我们不合适!

    就可以实现 @JsonView【推荐】 同一个响应对象,通过指定不同的Json视图,来达到响应不同数据结构的目的 前几种方式比较好理解,今天要讲的就是最后一种@JsonView 好了,上Bug!!!...上面的测试结果都带有pwd字段,下面就通过JsonView将列表查询中的pwd字段给去掉 定义不同的视图对象 @Data @AllArgsConstructor public class User {...第二步:在属性的get方法上面指定不同的视图@JsonView(xxx.class);由于这里使用了Lombok,所以@JsonView注解直接添加在属性之上 接口(controller)指定不同的视图...如何选择最好的方式 文章一开头列举了几种不同的方式,来满足不同场景下返回不同数据结构的问题,并没有说哪一种就是最优的解决方案;需要根据不同的业务场景,来针对性选择;如果说单表的操作,可能直接通Dao层按需求查询对应的字段就能好了...注意 JsonView仅支持jackson框架;SpringBoot默认使用的框架就是jackson;如果你将Http的消息转换对象由jackson配置成了FastJson,那么所有的@JsonView

    55520

    Spring Security技术栈开发企业级认证与授权(二)使用Spring MVC开发RESTful API

    它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。本篇博客主要讲述使用Spring MVC开发RESTful风格的API。...Json的时候,会考虑到只序列化部分字段,那么就可以使用@JsonView这个注解。...然后使用@JsonView注解将两个视图绑定到对应的字段的get方法上面,由于UserDetailView继承了UserSimpleView这个视图,所以在Controller方法上使用UserDetailView...下面进行代码展示: User类 package com.lemon.security.web.dto; import com.fasterxml.jackson.annotation.JsonView...是基于方法来进行区分的,所以设计到数据的修改和删除使用的方法是PUT和DELETE,接下来使用案例的方式介绍修改和删除API的开发。

    1.2K41

    【小家Spring】Spring MVC容器的web九大组件之---ViewResolver源码详解---视图View详解

    Jackson渲染的视图。...>) model.get(JsonView.class.getName()); FilterProvider filters = (FilterProvider) model.get(FilterProvider.class.getName...那么接下里有必要举例说明一下,Spring MVC返回Json格式数据的多种方式: Spring MVC返回json的三种方式 使用MappingJackson2JsonView,其实它是相对来说比较新的一种返回...因为它可以基于URL去渲染PDF,它也是个抽象类,Spring MVC并没有PDF的具体的视图实现~~ RedirectView(SmartView) 这个视图和SmartView一起讲解一下。...都是空的,所以此处也不会像里放了 // FlashMap主要是用来解决`post/redrect/get`问题的,而现在都是ajax所以用得很少了~但Spring3.1之后提出了这个方案还是很优秀的

    1.5K10

    Controller 层编码规范

    2)设置请求方式 常用的POST/GET。使用注解:@RequestMapping  和  @GetMapping @PostMapping。...HTTP Get方法将映射到特定的处理上 @GetMapping是一个注释解,它是一个组合@RequestMapping(method = RequestMethod.GET)的缩写 @PostMapping...4)请求参数 参数参数 使用注意解说@Validated,有特色的自动评测开始了,它是spring-contex中性的注释解说; vo类中自定义标注,比如@NotNull下等,他是javaxvalidation-api...,一般重新处理,按顺序排列,方便统一 Responses.success(data); import com.fasterxml.jackson.annotation.JsonView; import ...@ApiModel: 方法用于,更改字段数据,表示对模型属性的说明或操作 基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,

    66520

    一篇就够,Jackson的功能原来如此之牛(万字干货)

    什么是Jackson Jackson是比较主流的基于Java的JSON类库,可用于Json和XML与JavaBean之间的序列化和反序列化。...没看错,Jackson也可以处理JavaBean与XML之间的转换,基于jackson-dataformat-xml组件,而且比较JDK自带XML实现更加高效和安全。...提供基于“对象绑定”解析的API(ObjectMapper)和"树模型"解析的API(JsonNode);基于"对象绑定"解析的API和"树模型"解析的API依赖基于“流模式”解析的API。...JSON树模型 如果Json字符串比较大,则可使用JSON树模型来灵活的获取所需的字段内容。在Jackson中提供了get、path、has等方法来获取或判断。...@JsonProperty,作用JavaBean字段上,指定一个字段用于JSON映射,默认情况下映射的JSON字段与注解的字段名称相同。可通过value属性指定映射的JSON的字段名称。

    4.8K33

    用了几年的 Fastjson,我最终替换成了Jackson!

    但是jackson有更多现成的类库兼容支持例如jackson-datatype-commons-lang3,以及更丰富的输出数据格式支持例如jackson-dataformat-yaml,而且spring...PS: Jackson 2.10.0开始尝试基于新的API使用白名单机制来避免RCE漏洞,详见https://github.com/FasterXML/jackson-databind/issues/2195...以下步骤的源码分析基于以下版本: fastjson v1.2.60 jackson-core v2.9.9 jackson-annotations v2.9.0 jackson-databind v2.9.9.3...,等价于jackson的@JsonProperty.index() int ordinal() default 0; // 序列化和反序列化时的字段名称映射,等价于jackson的@JsonProperty.value...// 对属性进行打标,便于在序列化时进行exclude或include,等价于jackson的@JsonView String label() default ""; //

    6.8K10
    领券