我尝试在没有Spring的普通java中创建api客户端,或者其他框架使用Gson或Codehaus Jackson库。 有许多类型的Json响应。像这样:
{
"any_name1": {
"field1": 1,
"field2": 2
},
"any_name2": {
"field1": 3,
"field2": 4
}
...
}
它有任何对象名称和相同的字段。 或者这个:
{
"field1":1,
"field2":{
"obj1":{
"field1":1,
"field2":2
}
...
}
}
它应该可以使用此调用:
AnyTypeResponse response = apiClient.sendRequest(request, AnyTypeResponse.class);
我发送了我想从客户端获得的响应类型。 在第二个json示例中,它很清楚。对象有两个字段,其中一个是列表。 但第一个json示例是对象列表。例如,我不需要列表,但我需要一个带有列表(或地图)的对象。这意味着我需要在一个自定义响应对象中包装对象列表。我怎样才能做到这一点? 现在我使用这种方法:
public <T> T execute(Class<T> clazz) throws Exception {
...
// create HttpUrlConnection and send request
...
return objectMapper.readValue(response.toString(), clazz);
// or return gson.fromJson(response.toString(), clazz);
}
public class ListTypeResponse {
private List<AnyObj> objects;
public ListTypeResponse(List<AnyObj> objects) {
this.objects = objects;
}
public List<AnyObj> getObjects() {
return objects;
}
}
但它不起作用。你能救我吗?