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

标签 c# asp.net-core json.net blazor blazor-client-side

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/

相关文章:

c# - 如何从 ASP.NET Core 应用程序将图像上传到 Azure Blob 存储中的特定目录?

c# - JSON 添加节点到现有的 JObject

c# - 如何将名称-值集合对从 JSON 字符串反序列化为对象?

C# 网络凭据未传递到服务器?

c# - C++ 和 .NET 是否在银行、医疗保健和电信等领域一起使用

c# - 如何在启用分页的 gridview 中维护控件的状态?

c# - 将任意 json 响应转换为 "things"列表

c# - if else 条件不满足但仍然运行里面的代码

c# - 在列上创建唯一约束

c# - EF Core - 在上一个操作完成之前,在此上下文中启动了第二个操作。不保证任何实例成员都是线程安全的