如何从Rest webservices返回List <string>

时间:2015-09-24 17:14:51

标签: java rest java-ee jersey jersey-2.0

我想以XML或JSON格式从Rest Web服务(Java中)返回List<String>。但是我收到了一个错误:

MessageBodyWriter not found for media type=application/json, type=class java.util.ArrayList, genericType=java.util.List&lt;java.lang.String>>. 

您能告诉我如何从Rest Web服务(Java中)返回List<String>吗?

3 个答案:

答案 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);