簡體   English   中英

ASP.NET Core 中每個控制器的不同 JSON 反序列化設置

[英]Different JSON deserialization settings per controller in ASP.NET Core

我正在嘗試為特定控制器設置不同的JsonSerializerOptions 具體來說,我只想為這些控制器設置ReferenceHandler = ReferenceHandler.Preserve ,並從某個靜態實例繼承其余的序列化程序選項。

我正在尋找一種在控制器級別執行此操作的方法,在 ASP.NET Core 6.0 上使用System.Text.Json

我能夠使用以下解決方案使用動作過濾器進行序列化: https ://stackoverflow.com/a/56127866/2719183,但我無法找到一個好的解決方案來實現反序列化。 例如, https://stackoverflow.com/a/66256442/2719183對我不起作用,因為它需要每個參數的屬性。

如何在控制器級別覆蓋輸入格式化程序?

有兩個問題:序列化和反序列化。

  1. 序列化。 這相對容易,您必須創建動作過濾器並檢查動作結果,如果是ObjectResult那么您可以設置自定義 json 格式化程序。

  2. 反序列化/綁定。 這很棘手,您需要自定義正文綁定器(可以配置為使用自定義 json 格式化程序)、自定義綁定器提供程序、自定義綁定器源和自定義IControllerModelConvention以選擇性地覆蓋操作上的綁定源。

當您不使用其他過濾器或中間件等時,這應該適用於簡單的場景。

我沒有附加任何代碼,因為它將是十幾個類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM