35 lines
1016 B
Java
35 lines
1016 B
Java
package com.rj.common;
|
|
|
|
import com.fasterxml.jackson.core.JsonParser;
|
|
import com.fasterxml.jackson.databind.DeserializationContext;
|
|
import com.fasterxml.jackson.databind.JsonDeserializer;
|
|
|
|
import java.io.IOException;
|
|
|
|
/**
|
|
* 自定义 Integer 反序列化器
|
|
* 支持从字符串和整数两种格式反序列化为 Integer
|
|
* 如果无法解析,返回 null
|
|
*/
|
|
public class IntegerDeserializer extends JsonDeserializer<Integer> {
|
|
|
|
@Override
|
|
public Integer deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
|
|
String value = p.getValueAsString();
|
|
if (value == null || value.trim().isEmpty()) {
|
|
return null;
|
|
}
|
|
|
|
try {
|
|
// 尝试直接解析为整数
|
|
return Integer.parseInt(value);
|
|
} catch (NumberFormatException e) {
|
|
// 如果无法解析为整数,返回 null
|
|
// 这样可以避免反序列化错误,字段会被设置为 null
|
|
return null;
|
|
}
|
|
}
|
|
}
|
|
|
|
|