我正在尝试使用 Jackson 反序列化 JSON-RPC 对象。JSON-RPC 的格式为:
{“结果”:“某事”,“错误”:空,“id”:1}
在我的情况下,结果属性是一个通用对象。
我有一门用于对响应进行反序列化的课程:
public class JsonRpcResponse {
private Object result;
private JsonRpcError error;
private int id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public JsonRpcError getError() {
return error;
}
public void setError(JsonRpcError error) {
this.error = error;
}
public Object getResult() {
return result;
}
public void setResult(Object result) {
this.result = result;
}
}
我可以通过以下方式获取响应对象:
JsonRpcResponse jsonResp = mapper.readValue(response, JsonRpcResponse.class);
我想要一个通用方法,通过将要反序列化到的对象(或者如果需要的话)的类型传递给方法来反序列化这个结果对象。这样我可以根据我期望的响应传递任何类型的对象。
例如,我有这个类有两个属性:
public class JsonEventProperties {
private String conditon;
private String usage;
public JsonEventProperties(String condition, String usage) {
this.conditon = condition;
this.usage = usage;
}
public JsonEventProperties() {
throw new UnsupportedOperationException("Not yet implemented");
}
public String getConditon() {
return conditon;
}
public void setConditon(String conditon) {
this.conditon = conditon;
}
public String getUsage() {
return usage;
}
public void setUsage(String usage) {
this.usage = usage;
}
}
上述情况的响应内的结果对象将是:
"result": {"condition":"test","usage":"optional"}
我试过:
mapper.readValue(result,objectClass)
其中 result 是结果的 JsonNode 实例(由于某种原因是 LinkedHashMap)和 objectClass 我希望它反序列化到的类。但这不起作用。
我整天都在用不同的方式来做这件事,但我可能不明白杰克逊是谁工作的。
谁能帮我这个?
先感谢您。