【问题标题】:Can't deserialize JSON string by the help of System.Text.Json [duplicate]无法在 System.Text.Json 的帮助下反序列化 JSON 字符串 [重复]
【发布时间】:2022-02-28 09:37:48
【问题描述】:

我无法让 System.Text.Json 反序列化工作。

    public class LoginResponse
    {
        public LoginResponse()
        {

        }

        [JsonPropertyName("token")]
        public string Token;
    }

我想反序列化的 web 服务响应示例:

{"token":"eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImdvZG90IiwiZXhwIjoxNjQ2MDExODU1LCJpYXQiOjE2NDYwMTE1NTV9.tNtSWreYQjVxTuIFtzXdEWDY5Tr9I2tBI5D8gSR8FUTBDdsFKifzkHbYAshwxplQJc9m7e-1BxT3iV2_pQ7Uhw"}

但 responseBody.Token 仍然为空:

var responseBody = JsonSerializer.Deserialize<LoginResponse>(Encoding.UTF8.GetString(body));

知道我做错了什么吗?

【问题讨论】:

  • 我认为它不适用于字段。改为尝试属性

标签: c# json


【解决方案1】:

默认情况下,System.Text.Json 不支持绑定到字段。您可以将模型中的 Token 更改为属性:

[JsonPropertyName("token")]
public string Token { get; set; }

如果您使用的是 .NET 5 或更高版本,您可以在公共字段上使用 [JsonInclude] 属性:

[JsonInclude]
[JsonPropertyName("token")]
public string Token;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多