首页 > 解决方案 > 如何将json对象反序列化为c#

问题描述

我想从 JSON 反序列化这个对象:

{"domain":"google.com","data":{"available":true,"expiration":null,"registrant_email":null}}

我使用这段代码:

public class Data
{
    public string available { get; set; }
}

Data data = JsonConvert.DeserializeObject<Data>(finishResponse);
Console.WriteLine(data.available);

请帮帮我!

标签: c#jsonjson.net

解决方案


试试这个改变。这样,您的 C# 类将匹配您正在接收的 JSON 对象。如果您感兴趣,您当然应该扩展Data该类以包含其余的 json 字段。

  public class Response
  {
      [JsonProperty(Required = Required.Default)]
      public string Domain { get; set; }

      [JsonProperty(Required = Required.Always)]
      public Data Data { get; set; }
  }

您会注意到我添加了所需的AllowNullfor Expiration+RegistrantEmailData属性 to Always。如果您发送 null 进行Data反序列化将失败。

  public partial class Data
  {
      [JsonProperty(Required = Required.Default)]
      public bool Available { get; set; }

      [JsonProperty(Required = Required.AllowNull)]
      public object Expiration { get; set; } 


      [JsonProperty("registrant_email" ,Required = Required.AllowNull)]
      public object RegistrantEmail { get; set; }
  }

  var response = JsonConvert.DeserializeObject<Response>(finishResponse);
  Console.WriteLine(response.Data.available);

该答案还考虑了序列化的 json 字符串中的某些字段可能为 null,因此在这种情况下不会引发异常。


推荐阅读