1. RestController 的代码
@GetMapping("/{id}")
@ResponseBody
XXDto findById(@PathVariable String id) {
return service.findById(id); // 此处如果返回 null,相应的转换没有做
}
2. 代码 MappingJackson2HttpMessageConverter
@Configuration
public class HttpMessageConverter {
@Bean
public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() {
return new MappingJackson2HttpMessageConverter() {
@Override
protected void writePrefix(JsonGenerator generator, Object object) throws IOException {
if (object instanceof ArrayList) {
List list = (List) object;
if (!list.isEmpty()) {
if (list.get(0) instanceof SwaggerResource) {
super.writePrefix(generator, object);
return;
}
}
}
if (object instanceof Json || object instanceof SecurityConfiguration || object instanceof UiConfiguration) {
super.writePrefix(generator, object);
return;
}
generator.writeRaw("{\"code\": 0, \"result\": ");
super.writePrefix(generator, object);
}
@Override
protected void writeSuffix(JsonGenerator generator, Object object) throws IOException {
if (object instanceof ArrayList) {
List list = (List) object;
if (!list.isEmpty()) {
if (list.get(0) instanceof SwaggerResource) {
super.writeSuffix(generator, object);
return;
}
}
}
if (object instanceof Json || object instanceof SecurityConfiguration || object instanceof UiConfiguration) {
super.writeSuffix(generator, object);
return;
}
generator.writeRaw("}");
super.writeSuffix(generator, object);
}
};
}
}
3. 问题
当上述 1 中方法返回 null 时,2 中的 writePrefix 和 writeSuffix 不会被调到?有什么办法解决这个问题吗?