从输入流中读取实体时出错 - 使用Jackson

时间:2017-06-14 06:54:28

标签: java jackson

我需要调用一个以JSON格式返回以下内容并将它们转换为JAVA对象的API:

out[$num]="${array[index+1]} $file"

我有以下课程:

GET /api/myimpl/?ids=5,12

HTTP 200 OK
Allow: GET, POST, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

[
    {
        "id": "A1",
        "impl": "HeatSmart"
    },
    {
        "id": "B2",
        "impl": "My String"
    }
]

在我的代码中,我执行以下操作:

public class QueryStrings {
    private String id;
    private String impl;

    public QueryStrings() {
    }

    public QueryStrings(String id, String impl) {
        this.id = id;
        this.impl = impl;
    }

    public String getId() {
        return id;
    }

    public String getImpl() {
        return impl;
    }

    public void setId(String id) {
        this.id = id;
    }

    public void setImpl(String impl) {
        this.impl = impl;
    }
}

clientResponse返回状态OK。但是,当我试图将json放入我想要的对象时,最后一行返回错误:

client = ClientBuilder.newClient().register(JacksonFeature.class);
Response clientResponse = client.target(myURL)
        .queryParam("ids", "5,12")
        .request()
        .accept(MediaType.APPLICATION_JSON_TYPE)
        .get();
QueryStrings jsonResponse = clientResponse.readEntity(QueryStrings.class);

我的代码缺少什么?

1 个答案:

答案 0 :(得分:2)

api QueryStrings的{​​{1}}返回数组,因此您可以GenericType使用readEntity

List<QueryStrings> results = response.readEntity(new GenericType<List<QueryStrings>>(){});