問題描述:
我們經常在控制層使用對象來接收json數據,當對象裏面定義接收的是數組,而前端傳過來的是空字符串,這就導致了反序列化失敗。
處理方案:
手動判斷前端傳過來的內容,根據內容進行判斷再轉換一下(項目使用的是com.fasterxml.jackson)
@Data
public class CustPublicityListInfo {
@JsonDeserialize(using = RowJsonDeserializer.class)
private List<Row> rows;
public static class RowJsonDeserializer extends JsonDeserializer<List> {
@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;
}
}