情景: 操作日志记录, 对于浏览器发送的参数及响应值进行日志记录. 参数如果是"文件", 则不序列化这个参数.
初步解决:
//记录非文件对象的其他参数
if(args.length > 0) {
List<Object> params = Arrays.asList(args).stream().filter(obj -> !(obj instanceof MultipartFile || obj instanceof Part)).collect(Collectors.toList());
log.setParamsJson(JSON.toJSONString(params)); //参数的JSON
}
再次解决:
//记录非文件对象的其他参数
if(args.length > 0) {
List<Object> params = Arrays.asList(args).stream().filter(obj -> {
boolean need = true;
//排除MultipartFile,Part
if(obj instanceof MultipartFile || obj instanceof Part) need = false;
//排除List<MultipartFile>,List<Part>
if(obj instanceof List) {
@SuppressWarnings("unchecked")
List<Object> list = (List<Object>) obj;
if(list.size() > 0) {
Object object = list.get(0);
if(object instanceof MultipartFile || object instanceof Part) need = false;
}
}
return need;
}).collect(Collectors.toList());
log.setParamsJson(JSON.toJSONString(params)); //参数的JSON
}
问题: 能不能直接指定MultipartFile和Part接口的实现类不序列化, 这样可以直接无论他们本身, 在List中, 在属性中等都可以忽略序列化
1条答案
按热度按时间a11xaf1n1#