我想以XML或JSON格式从Rest Web服务(Java中)返回List<String>
。但是我收到了一个错误:
MessageBodyWriter not found for media type=application/json, type=class java.util.ArrayList, genericType=java.util.List<java.lang.String>>.
您能告诉我如何从Rest Web服务(Java中)返回List<String>
吗?
答案 0 :(得分:0)
您是否使用@ResponseBody或您的类使用@RestController注释您的方法?杰克逊在你的课堂上吗?
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
答案 1 :(得分:0)
这个怎么样:
@GET
@Path("list")
@Produces("application/json")
public List<String> getList()
{
return Arrays.asList("a", "b");
}
答案 2 :(得分:0)
在JAX-RS规范2.0中,您可以在第3.5章“声明媒体类型功能”中找到
@Provider
@Produces("application/widgets+xml")
public class WidgetsProvider implements MessageBodyWriter<Widgets>
实现或实现这样的接口
@Provider
@Produces("application/json")
public class JsonProvider implements MessageBodyWriter<Object>
可能会做到这一点。我没有测试过这个。
Provider
注释使JAX-RS框架可以发现类
Produces
注释将编写器链接到方法的预期输出。
对于Jersey,添加JacksonFeature应该可以做到(https://jersey.java.net/documentation/latest/user-guide.html#d0e8449)
final Application application = new ResourceConfig()
.packages("org.glassfish.jersey.examples.jackson")
.register(MyObjectMapperProvider.class) // No need to register this provider if no special configuration is required.
.register(JacksonFeature.class);