问题描述:
我们经常在控制层使用对象来接收json数据,当对象里面定义接收的是数组,而前端传过来的是空字符串,这就导致了反序列化失败。
处理方案:
手动判断前端传过来的内容,根据内容进行判断再转换一下(项目使用的是com.fasterxml.jackson)
@Data
public class CustPublicityListInfo {
@JsonDeserialize(using = RowJsonDeserializer.class)
private List rows;
public static class RowJsonDeserializer extends JsonDeserializer {
@Override
public List deserialize(JsonParser jsonParser,
DeserializationContext deserializationContext) throws IOException {
if (jsonParser == null) {
return null;
}
JsonNode node = jsonParser.getCodec().readTree(jsonParser);
if (node == null) {
return null;
}
String content = node.toString();
if (!"\"\"".equals(content)) {
return JacksonUtils.jsonToList(content, Row.class);
}
return null;
}
}