有一個通過休息電話提供的pojo。pojo 的欄位之一是 JSON。JSON 可以是任何有效的 JSON。它是由幾個不同的輸入提供的運行時間值。目標是在 JSON 欄位不是有效 JSON 時拋出例外
嘗試過:在 POJO
@JsonFormat(shape = JsonFormat.Shape.OBJECT)
private JsonNode json;
也嘗試過使用
@JsonRawValue
但是,當我提供任何東西時,它會將其作為某種型別的節點(TestNode、IntNode)等來選擇。
無論如何要在不引入額外代碼的情況下進行驗證?如果不是,當物體進入時如何在控制器處檢查?
uj5u.com熱心網友回復:
一種方法是使用org.springframework.validation.Validator
您可以注釋您的控制器
@PostMapping("/abc")
public Test test((@Validated(YourValidator.class)
@RequestBody YourPojo pojo)) {
return test;
}
現在您可以撰寫自己的驗證
public class YourValidator implements org.springframework.validation.Validator {
@Override
public void validate(Object target, Errors errors) {
YourPojo pojo = (YourPojo) target;
boolean validJson =false;
try {
final ObjectMapper mapper = new ObjectMapper(); //jackson library
String jsonInString = pojo.getJsonField() ;
mapper.readTree(jsonInString);
validJson= true;
} catch (IOException e) {
validJson= false;
}
errors.rejectValue("jsonField", "notValid");
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/432219.html
下一篇:使用可能回傳不同資料的JSON
