Java 使用来自 Rest 服务 GET 的 JSON 列表

标签 java json rest arraylist jersey

我收到的错误:

SEVERE: A message body reader for Java class java.util.List, 
and Java type java.util.List<com.testapp.Category>, 
and MIME media type text/html; charset=utf-8 was not found

尝试使用带有 Jersey 的 GET 方法使用来自 Rest 服务的 JSON 响应。当我使用 curl 时,服务器的响应如下所示:

[{"category":{"id":"4d9c5dfc8ddfd90828000002","description":"Cows"}},
{"category":{"id":"4d9c5dfc8ddfd90828000023","description":"Dogs"}},
...
{"category":{"id":"4d9c5dfc8ddfd90828000024","description":"Mules"}}]

使用服务:

public List<Category> getAnimalCategories(Cookie cookie) {
    Client client = Client.create(new DefaultClientConfig());
    ClientResponse response = client
        .resource(Constants.BASE_URL)
        .path(Constants.CATEGORIES_ANIMALS)
        .accept(MediaType.APPLICATION_JSON)
        .type(MediaType.APPLICATION_JSON)
        .cookie(cookie)
        .get(ClientResponse.class);

    return response.getEntity(new GenericType<List<Category>>(){});
}

Category.java 在哪里:

public class Category {

public String id;
public String description;

public Category() {
}

public Category(String id, String description) {
    super();
    this.id = id;
    this.description = description;
}

该服务使用基于 cookie 的身份验证 - 这部分有效,我有其他服务调用使用 cookie。

最佳答案

使用 Jackson 1.9.6 库解决了这个问题 - 请参阅下面的第二行:

ClientConfig clientConfig = new DefaultClientConfig();
clientConfig.getClasses().add(JacksonJsonProvider.class);
Client client = Client.create(clientConfig);

return client
    .resource(Constants.BASE_URL)
    .path(Constants.CATEGORIES_ANIMALS)
    .type(MediaType.APPLICATION_JSON)
    .accept(MediaType.APPLICATION_JSON)
    .cookie(cookie)
    .get(new GenericType<List<AnimalCategoryResponse>>(){});

还需要使用新的响应类:

public class AnimalCategoryResponse {
    public Category[] category;
    public AnimalCategoryReponse() { }
}

关于Java 使用来自 Rest 服务 GET 的 JSON 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9982422/

相关文章:

ios - 在串行队列中串行下载图像非常慢

rest - 用于检查是否为用户启用了 MFA 的 Azure AD REST API

java - 如何在 Spring 中使用 RESTTemplate 使用 API

java - 监听器执行多次的效果

javascript - AJAX 调用 PHP 不返回任何值

javascript - 如何从数组中选择json项

java - 在 JAAS 的策略文件中授予 URL 权限

java - 执行操作系统相关命令

java - 使用 Spring validator 自定义 xsd 模式验证

java - 无法为 Excel 工作表中的行提供背景颜色