簡體   English   中英

如何將 json 對象反序列化為 C#

[英]How deserialize json object to 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# 類將匹配您正在接收的 JSON 對象。 如果您感興趣,您當然應該擴展Data類以包含其余的 json 字段。

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

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

您會注意到我將所需的AllowNull添加到Expiration + RegistrantEmail並將Data屬性添加到Always 如果您為Data發送 null ,反序列化將失敗。

  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,因此在這種情況下不會拋出異常。

您的課程與 JSON 不匹配...這里有幾個與 JSON 匹配的課程:

public class MyJson
{
    [JsonProperty("domain")]
    public string Domain { get; set; }

    [JsonProperty("data")]
    public Data Data { get; set; }
}

public partial class Data
{
    [JsonProperty("available")]
    public bool Available { get; set; }

    // This should probably be a nullable DateTime
    [JsonProperty("expiration")]
    public object Expiration { get; set; } 

    // And this should probably be a string...
    [JsonProperty("registrant_email")]
    public object RegistrantEmail { get; set; }
}

我直接從您的 JSON 在線生成它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM