编写自定义c#类来表示JSON



我有一个JSON字符串,我需要为它创建C#类,然后以类似的格式解析整个List。JSON字符串包含"0"one_answers"1"。我已经用注释了类属性

[JsonProperty("0")]

但看起来不起作用。

 {
  "draw": 4,
  "recordsTotal": 57,
  "recordsFiltered": 57,
  "data": [
    {
      "0": "Charde",
      "1": "Marshall",
      "2": "Regional Director",
      "3": "San Francisco",
      "4": "16th Oct 08",
      "5": "$470,600",
      "DT_RowId": "row_13"
    },
    {
      "0": "Colleen",
      "1": "Hurst",
      "2": "Javascript Developer",
      "3": "San Francisco",
      "4": "15th Sep 09",
      "5": "$205,500",
      "DT_RowId": "row_9"
    },
    {
      "0": "Dai",
      "1": "Rios",
      "2": "Personnel Lead",
      "3": "Edinburgh",
      "4": "26th Sep 12",
      "5": "$217,500",
      "DT_RowId": "row_20"
    }]
    }

我为这个JSON 尝试的类

public class UserData
    {
        [JsonProperty("0")]
        public string Name { get; set; }
        [JsonProperty("1")]
        public string Email { get; set; }
       //Having more JSON properites 
        [JsonProperty("DT_RowId")]
        public long UserId { get; set; }
    }
    public class JsonValdate
    {
       public string draw { get; set; }
       public int length { get; set; }
       public int start { get; set; }
       public int recordsFiltered { get; set; }
       public int recordsTotal { get; set; }
       [JsonProperty("data")]
       public UserData[] data { get; set; }
    }

可能有些JSON数据无法转换为UserData属性

马上,您可以看到"DT_RowId": "row_20"无法转换为long UserId

在转换之外使用try-catch块,并查看异常。

例如,

private string Json
{
    get { 
        return @"
        {
            ""draw"": 4,
            ...
        }"; 
    }
}
try
{
    JsonValdate result = JsonConvert.DeserializeObject<JsonValdate>(Json);
}
catch (Exception ex)
{
     // Debug
}

以下是我的测试方法

由于转换不起作用,请不要同时放置所有字段。

从以下工作字段开始。然后一次添加一个字段。

private string Json
{
    get { return @"
        {
        ""draw"": 4,
        ""recordsTotal"": 57,
        ""recordsFiltered"": 57,
        ""data"": [
                {
                    ""0"": ""Charde"",
                    ""1"": ""Marshall""
                },
                {
                    ""0"": ""Colleen"",
                    ""1"": ""Hurst""
                },
                {
                    ""0"": ""Dai"",
                    ""1"": ""Rios""
                }]
        }"; 
    }
}
public class UserData
{
    [JsonProperty("0")]
    public string Name { get; set; }
    [JsonProperty("1")]
    public string Email { get; set; }
}
public class JsonValdate
{
    public string draw { get; set; }
    public int length { get; set; }
    public int start { get; set; }
    public int recordsFiltered { get; set; }
    public int recordsTotal { get; set; }
    [JsonProperty("data")]
    public UserData[] data { get; set; }
}
protected void Page_Load(object sender, EventArgs e)
{
    try
    {
        JsonValdate result = JsonConvert.DeserializeObject<JsonValdate>(Json);
    }
    catch (Exception ex)
    {
    }
}

相关内容

  • 没有找到相关文章

最新更新