如何解决找不到 MessageBodyWriter?
How to resolve MessageBodyWriter not found?
错误:
org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor aroundWriteToSEVERE:找不到媒体类型=application/vnd.xyzcompany.v1+json的MessageBodyWriter,类型=class model.OrderStatus,genericType=class model.OrderStatu
OrderStatus 是一个模型 class。
尝试 return class OrderStatus 的对象时遇到此问题。
主要原因是媒体类型,当我使用 application/json 尝试时它有效,但需要使用 自定义媒体来完成类型
像:application/vnd.xyzcompany.v1+json
额外信息:
@Produces 和@Consumes 与相同的媒体类型一起使用,OrderStatus class 在请求的响应中定义。
在我阅读的大部分内容中发现,自定义 mime/media 类型需要注册,但不知道如何注册和实现。
任何人都可以帮助解决这个问题。
提前致谢:)
使用自定义 media/mime 类型和 serializing/deserializing 根据新媒体类型接收或发送的对象。
它只需要带有“@Provider”注释和“@Produces”的class。 produces 注释将写为:@Produces({"application/customType.v1+json", "application/json"}).
具有对象映射器序列化和反序列化的 constructor/method。
注意:将此 class 保存在所有 API class 所在的包中。
示例代码:
@Provider
@Produces({MediaType.APPLICATION_JSON, "application/customType.v1+json"})
public class JacksonJsonProvider extends JacksonJaxbJsonProvider {
public JacksonJsonProvider() {
ObjectMapper objectMapper = new ObjectMapper()
.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
.registerModule(new JodaModule())
.setDateFormat(new RFC3339DateFormat());
setMapper(objectMapper);
}
}
错误: org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor aroundWriteToSEVERE:找不到媒体类型=application/vnd.xyzcompany.v1+json的MessageBodyWriter,类型=class model.OrderStatus,genericType=class model.OrderStatu
OrderStatus 是一个模型 class。
尝试 return class OrderStatus 的对象时遇到此问题。
主要原因是媒体类型,当我使用 application/json 尝试时它有效,但需要使用 自定义媒体来完成类型 像:application/vnd.xyzcompany.v1+json
额外信息: @Produces 和@Consumes 与相同的媒体类型一起使用,OrderStatus class 在请求的响应中定义。
在我阅读的大部分内容中发现,自定义 mime/media 类型需要注册,但不知道如何注册和实现。
任何人都可以帮助解决这个问题。
提前致谢:)
使用自定义 media/mime 类型和 serializing/deserializing 根据新媒体类型接收或发送的对象。
它只需要带有“@Provider”注释和“@Produces”的class。 produces 注释将写为:@Produces({"application/customType.v1+json", "application/json"}).
具有对象映射器序列化和反序列化的 constructor/method。
注意:将此 class 保存在所有 API class 所在的包中。
示例代码:
@Provider
@Produces({MediaType.APPLICATION_JSON, "application/customType.v1+json"})
public class JacksonJsonProvider extends JacksonJaxbJsonProvider {
public JacksonJsonProvider() {
ObjectMapper objectMapper = new ObjectMapper()
.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
.registerModule(new JodaModule())
.setDateFormat(new RFC3339DateFormat());
setMapper(objectMapper);
}
}