好的,所以我一直在搞砸这个。我得到一个 json 数组,其中包含如下所示的对象:[{
"id": "1",
"name": "some name",
"url": "some url",
"active": true
}, {
"id": "2",
"name": "some other name",
"url": "some other url",
"active": true
}
]"
现在,我希望能够将该数组反序列化为一个 java 对象,该对象包含数组中的对象列表。我制作了一个自定义反序列化器,如下所示:
public class ListSerializer extends JsonDeserializer<List<Provider>>{
private static final long serialVersionUID = 9114152571639338391L;
@Override
public List<Provider> deserialize(JsonParser jsonParser,
DeserializationContext arg1) throws IOException, JsonProcessingException {
// TODO Auto-generated method stub
final ObjectCodec objectCodec = jsonParser.getCodec();
final JsonNode listOrObjectNode = objectCodec.readTree(jsonParser);
final List<Provider> result = new ArrayList<Provider>();
for (JsonNode node : listOrObjectNode) {
result.add(objectCodec.treeToValue(node, Provider.class));
}
return result;
}
}
保存列表的类如下所示:
public class ProviderList {
@JsonDeserialize(using = ListSerializer.class)
private List<Provider> providerList;
public List<Provider> getProviderList() {
return providerList;
}
public void setProviderList(final List<Provider> providerList) {
this.providerList = providerList;
}
}
现在,我知道这可能是一种愚蠢的方法,但长话短说,这是刚需。我显然做错了什么,因为我收到了这个错误:
无法将 com.wirelesscar.trailser.v1_0.domain.ProviderList 的实例从 [Source: [{"id":"1","name":"Posttrack","url":"http:\ dev.posttrack.com","active":true},{"id":"2","name":"Trackunit","url":"http:\dev.trackunit.com","active":真的}]; 行:1,列:1]
所以我的问题。这可能吗?我在哪里错了。
先谢谢了!