- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
jackson 2.2.2
ObjectMapper mapper = new ObjectMapper();
mapper.getSerializationConfig().withView(Views.Public.class);
mapper.configure(MapperFeature.DEFAULT_VIEW_INCLUSION, false);
// if I try to simply configure using .without that config feature doesn't get set.
// I MUST use the .configure as above, but I guess that's a different question.
// .without(MapperFeature.DEFAULT_VIEW_INCLUSION);
// this first one doesn't have the view applied.
String result = mapper.writeValueAsString(savedD);
// this second one works.
result = mapper.writerWithView(Views.Public.class).writeValueAsString(savedD);
如果我在 SerializationConfig 上设置 View ,我希望此配置应用于使用此 ObjectMapper 映射的所有对象。
如何使 ObjectMapper 始终应用 JsonView 而无需调用 writerWithView
,以便我可以将此 ObjectMapper 提供给 Spring MVC?
最佳答案
事实证明,如果您真正阅读了文档,您会发现您不能仅通过调用 getSerializationConfig 并在其上调用 setter 来更改序列化配置。
/**
* Method that returns the shared default {@link SerializationConfig}
* object that defines configuration settings for serialization.
*<p>
* Note that since instances are immutable, you can NOT change settings
* by accessing an instance and calling methods: this will simply create
* new instance of config object.
*/
SerializationConfig getSerializationConfig();
我再说一遍,您不能通过访问实例和调用方法来更改设置:
所以你必须调用.configure
方法而不是.without
并且你不能通过调用.withView
来设置 View 。这些方法将构造一个新的 SerializationConfig 实例,但无法将新的 SerializationConfig 返回到 ObjectMapper。
为了解决这个问题并连接我的 ObjectMapper 以供 Spring MVC 在处理 @ResponseBody 时使用,我实现了以下内容:
@Configuration
class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
ObjectMapper mapper = new ObjectMapper() {
private static final long serialVersionUID = 1L;
@Override
protected DefaultSerializerProvider _serializerProvider(SerializationConfig config) {
// replace the configuration with my modified configuration.
// calling "withView" should keep previous config and just add my changes.
return super._serializerProvider(config.withView(Views.Public.class));
}
};
mapper.configure(MapperFeature.DEFAULT_VIEW_INCLUSION, false);
converter.setObjectMapper(mapper);
converters.add(converter);
}
}
有了所有这些,一切都对我有用。
关于java - jackson JsonView 未被应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21048020/
我使用自定义反序列化器,但是当我调用objectMapper.writerWithView(Views.MyView.class)时,我没有得到预期的结果。 在调试的时候,我发现在方法中 public
我有包装 JPA 实体的 UI 对象,并且在该 UI 对象的构造函数中,我对某些属性进行了延迟加载。在同一个构造函数中,我需要知道 JsonView 当前处于事件状态,因此我不会延迟加载一些不需要的字
我需要使用@JsonView 在反序列化时抛出异常。 我的 POJO: public class Contact { @JsonView( ContactViews.Person.class
以下内容将仅包含具有 JsonView(View.MyView.class) 注释的字段: @JsonView(View.MyView.class) @RequestMapping(value = "
我无法使用@JsonView 执行这个简单的示例。我做错了什么? ${jackson-2-version} = 2.6.5 com.fasterxml.jackson.core ja
我正在尝试使用 @JsonView 注释从 Spring 中的对象反序列化多个字段。但是,我将注释添加到我的方法中,它没有反序列化指定的字段,而是返回一个空对象。 这是我的 POJO: @Entity
我正在尝试为我的嵌套实体使用 @JsonView 注释。更清楚地说,假设我们有 2 个实体,每个实体都有自己的 View 类。 public class JsonViewAddress {
我有以下测试设置: public class TestingPojo { public int getA() { return 1; } @JsonView(T
我试图根据请求用户的角色有选择地隐藏响应中的某些字段。据我所知,来自 Jackson 的 JsonView 可能是正确的选择。 我需要能够显示所有字段,除非它们已标记有特定的访问级别。我为访问级别创建
我的一个类有 3 个相同类型的属性。现在我正在尝试将其序列化为 JSON,但其中一个属性需要以不同的方式序列化 - 基本上这些属性之一是“内部”,我只需要它的 id,其余属性必须完全序列化。 到目前为
我将 Jackson JSON 1.9.12 与 SpringMVC 一起使用。我创建了一个带有 JSON 字段的 dto。我想要两个具有不同 JSON 字段的相同 dto 配置文件,因此我创建了两个
jackson 2.2.2 ObjectMapper mapper = new ObjectMapper(); mapper.getSerializationConfig().withView(Vie
如何在不在该 Java 对象的每个字段上指定 @JsonView 的情况下将 Java 对象的所有字段包含到 JSON 响应( View )中? 编辑:我需要在不使用另一个外部库的情况下实现这一点。
我有类似于这两个类的东西: public class User { @JsonView(UserView.IdOnly.class) int userID; String na
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
我正在开发一个 Spring boot(MVC、JPA)应用程序,它需要在不同的请求上返回不同的属性。我找到了 @JsonView 注释,它似乎有效。但是我需要用基本 View 来注释每个属性吗? 示
您好,我几乎没有相互嵌入的 UI 对象。示例 #1: class CarUI { public UserUI user; public UserUI agent; .... publi
我正在使用新的 CakePHP 2.1,并希望使用 JsonView 使我的 Controller 响应 JQuery 在客户端创建的 ajax 请求。但是,根据文档,这应该使用 JsonView 自
Spring 从 4.1 版本开始支持 @JsonView。 使用具有多个标识符的 @JsonView 注释 Spring Controller 的(使用 @RestController 注释)方法我
我有一个类包含另一个类的集合。 class A{ @JsonView(VerboseViewA.Minimal.class) String field1; @JsonView(VerboseVi
我是一名优秀的程序员,十分优秀!