当前位置: 首页 > 知识库问答 >
问题:

在基于控制器的Spring Boot中从Json响应中隐藏/显示字段

陈君之
2023-03-14

我用的是Jackson和spring Boot。我有要求显示/隐藏相同的响应/基于控制器的请求模型的文件。例如,对于controllerA,我需要显示字段,而对于controllerB,我需要隐藏它。在两个控制器中使用的模型是相同的。我尝试使用@jsonview,但它给大摇大摆的文档带来了问题。请帮忙

共有1个答案

顾昊穹
2023-03-14

您可以在字段IE上使用自定义注释:interface@PleaseIgnoreThis,在每个想要不同处理的字段上包含注释,然后使用反射创建一个简单的方法,将这些注释从响应中排除。

实体:

MyEnity {

    @PleaseIgnoreThis
    long id = 123;

    String name = "the name";

    String attr = "some value"

}

注释接口:

@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@interface PleaseIgnoreThis {}
Map<Object, Object> excludeTheseFromResponse(Object object) {
    Map<Object, Object>() map = new HashMap<>();
    for(Field f in object class) {
        if f does not have annotation PleaseIgnoreThis
            add it to the map (name, value)
    } 
    return map;
}
@RequestMapping(value="/somePath/{maybe_some_id})
Object getSomeEntity(id) {
    return myRepository.findById(id));
}
@RequestMapping(value="/somePath/{maybe_some_id})
Object getSomeEntity(id) {
    return excludeTheseFromResponse(myRepository.findById(id));
}
 类似资料:
  • 问题内容: 我已经在Go中创建了一个API,该API在被调用后会执行查询,创建一个结构实例,然后将该结构编码为JSON,然后再发送回调用方。我现在想允许调用者通过传递“ fields” GET参数来选择他们想要返回的特定字段。 这意味着根据字段值,我的结构将发生变化。有什么方法可以从结构中删除字段?或者至少将它们动态隐藏在JSON响应中?(注意:有时我有空值,因此JSON omitEmpty标记在

  • 本文向大家介绍控制文字内容的显示与隐藏示例,包括了控制文字内容的显示与隐藏示例的使用技巧和注意事项,需要的朋友参考一下

  • 排除不显示字段 Model.findAll({ attributes: { exclude: ['baz'] } });

  • 本文向大家介绍jQuery控制元素隐藏和显示,包括了jQuery控制元素隐藏和显示的使用技巧和注意事项,需要的朋友参考一下 1、jQuery隐藏和显示效果 通过 jQuery,您可以使用 hide() 和 show() 方法来隐藏和显示 HTML 元素: 2、jQuery淡入淡出效果 通过 jQuery,您可以实现元素的淡入淡出效果。 jQuery 拥有下面四种 fade 方法: fadeIn()

  • 我正在开发包含2个片段的应用程序,我想根据需要显示隐藏。下面的代码有一个简单的例子来说明我的问题。这个简单的Fragmentactivity包含一个按钮和一个listfragment。 这个简单的例子完美无瑕。但我不满足于展示隐藏片段。如果删除布局。设置可见性(View.GONE);然后从代码中选择ft.hide(f);不会隐藏碎片。事实上,我们不是在隐藏片段,而是在隐藏容器。 我的问题是,这是一

  • 本文向大家介绍javascript控制层显示或隐藏的方法,包括了javascript控制层显示或隐藏的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了javascript控制层显示或隐藏的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的javascript程序设计有所帮助。