[英]Spring Boot validation, expect field when deserializing requestBody, but not from responseBody
[英]Spring Boot @RestController, be tolerant to MismatchedInputException when deserializing a Collection in @RequestBody
我正在嘗試實現一個端點,它通過@RequestBody
接受一個List<SomeClass>
並支持部分處理/容錯。
就像,即使某些元素是錯誤的(甚至可能是不同的類型,但仍然是有效的 JSON),丟棄它們並繼續下一個而不是拋出異常並快速失敗。
我已經在每個元素上以編程方式調用驗證器,而不是使用@Valid
,但是每當我收到具有不同模式或類型的東西時,我都會得到一個com.fasterxml.jackson.databind.exc.MismatchedInputException
。
我怎樣才能改變這種行為而不是失敗,而是忽略並處理下一個元素?
我正在使用 Spring Boot 2.2.3.RELEASE
。
我嘗試使用@JsonIgnoreProperties(ignoreUnknown = true)
,但是當我收到非對象類型時,仍然拋出異常。
我要處理的示例 JSON:
[
null,
[],
{},
-1,
false,
"Test",
{ "someKey": "someValue" }
]
其中只有{ "someKey": "someValue" }
是有效的SomeClass
定義。
我會為 Spring 創建一個自定義反序列化器:
如何使用 Jackson 和 Spring Boot 提供自定義反序列化器
然后,在我的反序列化器中,我會將 JSON 字符串處理為通用 JSON 數組並遍歷它以嘗試反序列化數組中的每個項目。
對於成功的,將它們添加到反序列化器將返回的列表中。 對於那些不“起作用”的,將它們扔掉並繼續加工。
沒有代碼,就沒有什么可以幫助的了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.