【问题标题】:How to inject dependency in Newtonsoft JsonConverter in .net core 5.0如何在 .net core 5.0 中的 Newtonsoft JsonConverter 中注入依赖项
【发布时间】:2022-01-23 09:12:19
【问题描述】:

我正在尝试从我的 Web 应用程序调用 Web API。我正在使用 .Net 5.0,在编写代码时出现错误“当前名称中不存在'JsonConvert'”定义 JsonConvert.DeserializeObject 方法。 *所以我的问题是@inject 是什么...我需要使用才能在剃须刀页面中使用

@代码{ 私人雇员雇员{得到;放; } = 新员工();

private async void HandleValidSubmit()
{
    try
    {
        var response = await Http.PostAsJsonAsync("/api/Employee", Employee);
        response.EnsureSuccessStatusCode();

        var content = await response.Content.ReadAsStringAsync();
        var employee= JsonConvert.DeserializeObject<Employee>(content);
        Navigation.NavigateTo($"employee/edit/{employee.Id}");
    }
    catch (AccessTokenNotAvailableException exception)
    {
        exception.Redirect();
    }
    catch (Exception e)
    {
    }
}

}

【问题讨论】:

    标签: asp.net-core razor blazor jsonconvert


    【解决方案1】:

    尝试将以下代码添加到您的剃须刀页面中:

    @using Newtonsoft.Json;
    

    【讨论】:

      【解决方案2】:

      “名称‘JsonConvert’不存在……”

      Newtonsoft.Json 仍可用于向后兼容。

      新的 API 是 System.Text.Json。除非您有特定理由使用 Newtonsoft,否则您应该使用它。

      您已经在使用依赖于 System.text 的辅助方法 PostAsJsonAsync 并完成所有工作。您只需要两行代码:

      //var response = await Http.PostAsJsonAsync("/api/Employee", Employee);
      var employee = await Http.PostAsJsonAsync<Employee>("/api/Employee", Employee);
      Navigation.NavigateTo($"employee/edit/{employee.Id}");
      

      如果您确实想在详细步骤中反序列化,那么它看起来像

      var content = await response.Content.ReadAsStringAsync();
      var employee = System.Text.Json.JsonSerializer.Deserialize<Employee>(content);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-12-20
        • 2021-07-15
        • 2020-06-04
        • 1970-01-01
        • 2016-05-22
        • 1970-01-01
        • 1970-01-01
        • 2019-03-14
        相关资源
        最近更新 更多