强制 Blazor webassembly 在客户端使用 Newtonsoft.Json

mko*_*mko 8 blazor blazor-client-side blazor-webassembly

在 Blazor webassembly 中,有一种方法可以强制对 httpclient 和 GetJsonAsync、PostAsJsonAsync 等方法使用 Newtonsoft.Json 序列化。

或者唯一的方法是编写辅助方法并使用 GetAsync,然后使用 Newtonsoft.Json 手动序列化响应?

Hen*_*man 5

有没有办法强制将 Newtonsoft.Json 用于 ... PostAsJsonAsync 等。

不。最近这种情况发生了一些变化,尤其是对于 Blazor。但是 System.Net.Http.Json.HttpClientJsonExtensions 现在直接依赖 System.Text.Json,不可插入。

所以是的,你必须编写自己的助手,没什么大不了的。链接器甚至可能会删除 Release 版本中的 System.Text.Json 类,我不确定。

但相反的问题当然是你为什么需要这个?NewtonSoft 从现在开始是传统的,如果您确实有不兼容的数据,请询问您是否可以使用一些 System.Text 选项解决此问题。

  • 嗯,使用 [JsonProperty("model")] [JsonConverter(typeof(StringEnumConverter))] 等属性对我来说非常有用。我不知道还有其他选择,但在你的回答之后,你让我思考。我找到了以下链接 https://devblogs.microsoft.com/dotnet/try-the-new-system-text-json-apis/ 看起来有一个合适的替代方案 (3认同)
  • 问题是 System.Text.Json 在很大程度上仍然是一场燃烧的垃圾之火。它不支持特定于语言的东西,例如类型转换器。这应该在他们开始之前就已经考虑好了,更不用说推出发布的产品了。 (3认同)