我在 Spring 控制器中有一个 writeResponse 方法,它将 DTO 写为 Json :
private void writeResponse(String type , Object objectToWrite , ResourceResponse response){
try {
MyDTO myDto= new MyDTO ();
ObjectMapper mapper = new ObjectMapper();
response.getWriter().write(mapper.writeValueAsString(myDto));
}
catch (final JsonGenerationException e) {
log.error(e.getMessage());
} catch (final JsonMappingException e) {
log.error(e.getMessage());
} catch (final IOException e) {
log.error(e.getMessage());
}
}
writeResponse 方法被多个方法调用,每个调用者方法是一个不同的 REST 端点。目前只有一种 DTO 类型:MyDTO。但是将添加更多 DTO 类型。要确定应该写入哪个 DTO,有一个“类型”方法参数。所以上面的方法可以变成:
private void writeResponse(String type , Object objectToWrite , ResourceResponse response){
try {
if(type == "1"){
MyDTO myDto= new MyDTO ();
ObjectMapper mapper = new ObjectMapper();
response.getWriter().write(mapper.writeValueAsString(myDto));
}
else if(type == "2")
{
MyDTO2 myDto2= new MyDTO2 ();
ObjectMapper mapper = new ObjectMapper();
response.getWriter().write(mapper.writeValueAsString(myDto2));
}
}
catch (final JsonGenerationException e) {
log.error(e.getMessage());
} catch (final JsonMappingException e) {
log.error(e.getMessage());
} catch (final IOException e) {
log.error(e.getMessage());
}
}
这感觉有点笨拙。我正在尝试实现一个干净的方法,根据调用的端点返回不同的 JSON。有比我建议的更好的方法吗?
注意:上面的代码是伪代码和 java 的混合。