[英]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對我不起作用,因為它需要每個參數的屬性。
如何在控制器級別覆蓋輸入格式化程序?
有兩個問題:序列化和反序列化。
序列化。 這相對容易,您必須創建動作過濾器並檢查動作結果,如果是ObjectResult
那么您可以設置自定義 json 格式化程序。
反序列化/綁定。 這很棘手,您需要自定義正文綁定器(可以配置為使用自定義 json 格式化程序)、自定義綁定器提供程序、自定義綁定器源和自定義IControllerModelConvention
以選擇性地覆蓋操作上的綁定源。
當您不使用其他過濾器或中間件等時,這應該適用於簡單的場景。
我沒有附加任何代碼,因為它將是十幾個類。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.