gpt4 book ai didi

c# - 将 JsonConverterFactory 添加到 Blazor Webassembly 应用程序

转载 作者:行者123 更新时间:2023-12-04 14:11:38 26 4
gpt4 key购买 nike

Blazor 的新功能、Web Assembly 的新功能、.NET Core 的新功能、.NET 的新功能(自 1.0 起)。

我正在迈出学习 Blazor 的第一步 - 我主要是后端和 winforms 开发人员,而不是客户端。

对于我的项目,我正在构建一个 Blazor Web Assembly 客户端,它可以访问我通过 Azure Functions 3 部署的一些现有功能。我想在前端和后端应用程序之间共享一些 POCO。

我遇到了 Blazor 应用程序和 Azure 函数应用程序之间的“阻抗不匹配”。这两个应用(Blazor 和 Functions)都是基本的“开箱即用”应用,按照 VS2019 中的新项目模板创建它们的方式配置。

  • Azure 函数应用以“netcoreapp3.1”为目标,而 Blazor 客户端应用以“netstandard2.1”为目标
  • Azure Functions 使用 Newtonsoft.Json 而 Blazor 使用 System.Text.Json

为了共享对象定义,我将包含我的 POCO 的类库更改为 netstandard2.1,这似乎没问题。这是正确的解决方案吗?

我无法克服的问题是:从 Azure Functions 应用返回一个包含 enum 属性的对象。当在 JSON 文本中遇到枚举值时,此对象的反序列化在 Blazor 应用程序中失败。

如何让 System.Text.Json 反序列化 enum 属性?

我看过如何将 JsonConvertorFactory 添加到 ASP.NET Core 的示例,但不清楚这些示例如何或是否适用于 Blazor 应用程序。例如,here .

Newtsoft.Json 端,POCO 装饰有 Newtonsoft.Json.JsonConvertor 属性。我尝试添加相应的 System.Text.Json 转换器属性,但找不到该类 - System.Text.Json 不是 netstandard2.1 的一部分吗?

最佳答案

I changed the class library containing my POCOs to netstandard2.1 and that seems to be OK. Was this the correct solution?

是的,没关系。

而且我知道您可以将 NewtonSoft 添加到 Blazor 应用程序,它只会增加一点大小。

另一方面,我不确定 Azure Functions 是否与 NewtonSoft 紧密相关,你不只是使用 HttpRequest 和 HttpResponse 吗?这应该也适用于 System.Text.Json。

所以你应该能够在双方使用相同的 Json 库。

is System.Text.Json not part of netstandard2.1?

不是“一部分”,而是“支持”。您可以通过向项目添加正确的包来解决此问题(如果仍然需要)。

关于c# - 将 JsonConverterFactory 添加到 Blazor Webassembly 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63872869/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com