Json 调用时反序列化对象 returns null

Json Deserialize Object returns null when called

我正在使用一个 API,returns 一个看起来像这样的字符串:

{
  "id": "835166796775451164",
  "username": "˞˞˞˞˞˞˞˞˞˞˞˞˞˞˞˞˞˞˞˞",
  "avatar": "x",
  "discriminator": "1391",
  "public_flags": 0,
  "flags": 0,
  "purchased_flags": 2,
  "locale": "en-US",
  "nsfw_allowed": true,
  "mfa_enabled": false,
  "premium_type": 2,
  "email": "x",
  "verified": false,
  "phone": null
}

和反序列化此 JSON 的对象:

      public class User
    {
        [JsonProperty(PropertyName ="id")]
        public string Id { get; set;  }

        [JsonProperty(PropertyName = "username")]
        public string Username { get; set; }

        [JsonProperty(PropertyName = "email")]
        public string Email { get; set; }

        [JsonProperty(PropertyName = "discriminator")]

        public string Discriminator { get; set; }

        [JsonProperty(PropertyName ="phone")]
        public string Phone { get; set; }
        
        [JsonProperty(PropertyName ="verfied")]
        public string Verified { get; set; }

    }

然而,当我尝试将收到的 JSON 字符串反序列化为该对象并调用它时,它 returns 是一个“空”值。这是我的反序列化代码:

 if (responseHtml.IsSuccessStatusCode)
            {
                var json = await responseHtml.Content.ReadAsStringAsync();
                User user= JsonConvert.DeserializeObject<User>(json);
            }

我也试过用这个 Deserialization of JSON.Net returns 'null':

做一个包装
 public class UserWrapper
    {
        public User User { get; set; }
    }

但它也返回了一个空值

 static async Task Main(string[] args)
        {
            await utilities.FetchAccountInformation();
            Models.User user= new Models.User();

            Console.WriteLine(user.Username);
        }

我修复了它,以防万一有人遇到同样的问题我想 post 一个关于我如何设法解决它的解决方案。基本上我所做的是添加这个 class 将附加设置附加到序列化程序:

 internal static class Converter
    {
        public static readonly JsonSerializerSettings Settings = new JsonSerializerSettings
        {
            MetadataPropertyHandling = MetadataPropertyHandling.Ignore,
            DateParseHandling = DateParseHandling.None,
            Converters =
            {
                new IsoDateTimeConverter { DateTimeStyles = DateTimeStyles.AssumeUniversal }
            },
        };
    }

然后将其作为参数添加到 DeserializeObject 方法中如:

User user= JsonConvert.DeserializeObject<User>(json, Converter.Settings);

希望对大家有所帮助。