我正在使用Spring Boot(1.2.1),其方式与构建RESTful Web服务教程类似:
@RestController
public class EventController {
@RequestMapping("/events/all")
EventList events() {
return proxyService.getAllEvents();
}
}
上面,Spring MVC隐式地使用Jackson将我的eventlist
对象序列化为JSON。
但是我想对JSON格式做一些简单的自定义,比如:
setSerializationInclusion(JsonInclude.Include.NON_NULL)
问题是,定制隐式JSON映射器的最简单方法是什么?
我尝试了这篇博文中的方法,创建CustomObjectMapper等,但步骤3“在Spring上下文中注册类”失败了:
org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'jacksonFix': Injection of autowired dependencies failed;
nested exception is org.springframework.beans.factory.BeanCreationException:
Could not autowire method: public void com.acme.project.JacksonFix.setAnnotationMethodHandlerAdapter(org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter);
nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException:
No qualifying bean of type [org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter]
found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}
您可以通过application.properties
配置属性包含和许多其他设置:
spring.jackson.default-property-inclusion=non_null
文档中有一个表列出了所有可以使用的属性。
如果您想要更多的控制,还可以使用Jackson2ObjectMapperBuilderCustomizer
bean编程自定义Spring Boot的配置,如文档中所述:
上下文的Jackson2ObjectMapperBuilder
可以由一个或多个Jackson2ObjectMapperBuilderCustomizer
bean自定义。这样的定制器bean是可以排序的(引导自己的定制器的排序为0),允许在引导定制之前和之后应用额外的定制。
最后,如果您不想使用任何引导配置,并且希望完全控制ObjectMapper
的配置方式,请声明您自己的Jackson2ObjectMapperBuilder
bean:
@Bean
Jackson2ObjectMapperBuilder objectMapperBuilder() {
Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder();
// Configure the builder to suit your needs
return builder;
}
问题内容: 我正在使用Spring Boot(1.2.1),其方式与他们的Build RESTful Web Service教程中的方式类似: 因此,在上面,Spring MVC隐式使用Jackson将我的对象序列化为JSON。 但我想对JSON格式进行一些简单的自定义,例如: 问题是,定制隐式JSON映射器的最简单方法是什么? 我在此博客文章中尝试了该方法,创建了CustomObjectMapp
我已经为这些列表创建了模型类,这些列表是我收到的对我的服务的响应 清单1 清单2 列表3是最后的列表,上面两个列表映射的结果,即我的服务的响应 清单3 这些列表与用户名和用户标签相连。我已将列表1的所有值映射到列表3。现在对于列表2,我需要检查每个userLabel是否在list3中存在一个userName等于userLabel的对象,如果为true,则totalUsers的值设置为list3的那
为了编写所需的最少代码量,我尝试让ModelMapper生成其隐式映射,并且只为那些无法自动映射的属性编写显式属性映射。 如果我让ModelMapper使用以下命令生成隐式映射: 它抱怨具有多个可能的映射。然后,我尝试使用以下方法修复该问题: 然而,我发现ModelMapper仍在抱怨,因为实际上在上抛出了一个异常,所以它没有机会访问我的自定义映射代码。 如果我反转这两个语句,我会得到一个错误:
我有两个对象,除了date成员外,其他成员都相同。在obj1中,date是java.sql.date,obj2.date是long(纪元)。 我需要编写一个映射器来将obj1映射到obj2。这就是我试图做的: 但是mapperImpl只有自己的日期转换实现: 我得到了: 这种转换的正确方式是什么?
假设我有很多团队,比如:“团队A,团队B…团队Z”,每个团队至少有5个组件。现在我想创建一个通用控制器,它可以响应任何类型的请求,这样我就可以获得关于团队成员的信息。 例如,我的控制器必须能够映射此请求: 团队课程可以是: 而且 显然它既可以执行也可以执行,重点是我不想为每个团队和每个数字指定一个控制器,我只想要一个可以响应的控制器。 我还需要指定它可以接受的字符串和值的范围(例如,最大值为5)。
问题内容: 如果名称和名称相同,默认情况下MapStruct将映射源和目标的所有属性。尽管我们可以在@Mapping中使用ignore属性来省略任何字段映射。但这不是我想要的。我想控制映射策略。我必须指定类似 现在此映射仅用于将ID和名称从源映射到目标。除非在映射注释中指定,否则不应映射其他字段。 问题答案: 您正在寻找的是#1392中 的功能请求。有一个待定的PR,因此可以在下一版本(1.3.0