我有一个REST
来电,可以返回AccountPojo
或ErrorCodePojo
。每个都有特定的字段。如何使用Jackson JSON
图书馆轻松解析回复并获取AccountPojo
或ErrorCodePojo
?
我有类似的东西:
ObjectMapper mapper = new ObjectMapper();
try {
ret = mapper.readValue(json, AccountPojo.class);
} catch (JsonProcessingException e) {
ret = mapper.readValue(json, ErrorCodePojo.class);
}
但我不认为这很好。
谢谢!
答案 0 :(得分:0)
您也可以使用ObjectMapper#convertValue
方法。使用此方法,您的解析算法可能如下所示:
Map
类。AccountPojo
/ ErrorCodePojo
的属性。例如,假设您的ErrorCodePojo
类看起来像这样:
class ErrorCodePojo {
private int errroCode;
private String message;
//getters, setters
}
属性errroCode
仅存在于ErrorCodePojo
中。 AccountPojo
不包含此属性。
// Step 1
Map<?, ?> value = mapper.readValue(json, Map.class);
// Step 2
if (value.containsKey("errroCode")) {
// Step 3
mapper.convertValue(value, ErrorCodePojo.class);
} else {
// Step 3
mapper.convertValue(value, AccountPojo.class);
}