我有我的Api Rest,在某种程度上我验证了一些东西,我使用这行代码将答案返回给客户端计算机:(这是服务器Api Rest代码)

IDictionary<string, string[]> errors = new Dictionary<string, string[]>();
... some validation code...
return Results.ValidationProblem(errors);

之后,在我的客户端程序中,我得到如下响应:(这是客户端程序)

string errorData = await response.Content.ReadAsStringAsync();

我的字符串errorData如下:(如果打印errorData,则该数据在字符串中)

{
"type":"https://tools.ietf.org/html/rfc7231#section-6.5.1",
"title":"One or more validation errors occurred.",
"status":400,
"errors":{"Fail to login":["Invalid username or password"]}
}

当我try 将该字符串转换为真实对象时,数据具有类的默认值(空值):(客户端程序)

ResultError? error = System.Text.Json.JsonSerializer.Deserialize<ResultError>(errorData);

ResultError类如下:(客户端程序)

public class ResultError
        {
            IDictionary<string, string[]> errors = new Dictionary<string, string[]>();
            int status = 0;
            string title = string.Empty;
            string type = string.Empty;
        }

如何获得正确的数据?

推荐答案

您必须通过向属性添加getter/setter来修复该类,而不需要任何接口,并且如果没有任何特殊原因,通常分配默认值不是一个好主意.您应该随时准备好,可以在途中的某个地方为属性指定null或其他值

public class ResultError
{
         public   Dictionary<string, string[]> errors {get; set}
         public   int status {get; set;}
         public   string title {get; set;}
         public   string type {get; set;}
}

Csharp相关问答推荐

Monty Hall游戏节目模拟给我50/50的结果

如何从泛型方法返回一个可为空的T,其中T:notnull?

C#EF Core 8.0表现与预期不符

如何在C#中使用Postman中的本地IP向本地主机上运行的本地API发出请求

StackExchange.Redis.RedisServerException:调用ITransaction.ExecuteAsync()时出现错误未知命令取消监视

Docker Container中的HttpRequest后地址不可用

C#中浮点数的System.Text.Json序列化问题

如何使用MailKit删除邮箱?

从另一个不同 struct 的数组创建Newtonsoft.Json.Linq.J数组

.Net MAUI,在将FlyoutPage添加到容器之前,必须设置添加构造函数导致Flyout和Detail"

解决方案:延长ABP框架和ANGING OpenIddict中的令牌生命周期

多个选项卡上的MudForm验证

使用未赋值的、传递的局部变量

ASP.NET MVC数据批注验证组复选框

如何使用.NET 8.0中新的CompositeFormat类?

嵌套Blazor组件内的验证

.NET8支持Vector512,但为什么向量不能达到512位?

如何使ExecuteAsync异步运行

S,在.NET核心控制台应用程序中,AddScope和AddSingleton有什么不同?

有没有更好的方法来使用LINQ获取整行的计算组