How do I create a Dto in C# Asp.Net from a fairly complex Json Response

I have called an Api and received this response using RestSharp. I have no control over the structure of the Json response.

{
  "response": {
    "result": {
      "Leads": {
        "row": [
          {
            "no": "1",
            "FL": [
              {
                "val": "LEADID",
                "content": "101"
              },
              {
                "val": "Company",
                "content": "Test 1"
              }
            ]
          },
          {
            "no": "2",
            "FL": [
              {
                "val": "LEADID",
                "content": "102"
              },
              {
                "val": "Company",
                "content": "Test 2"
              }
            ]
          }
        ]
      }
    },
    "uri": "/crm/private/json/Leads/getRecords"
  }
}

I would like to extract a List of Leads as Dto's from the Json ideally without doing the horrible parsing etc.

So for example I would create a Dto class:

public class LeadDto {
  public string LeadId;
  public string Company;
}

and these Leads could be contained in a list or something.

I have been reading https://github.com/restsharp/RestSharp/wiki/Deserialization for ages but not getting anywhere.

Can anyone point me in the right direction with examples?


Solution 1:

Copy the JSON and then in Visual Studio, in the menu bar go to: Edit > Paste Special > Paste JSON as Classes:

enter image description here

And it will produce the following for your JSON:

public class Rootobject {
   public Response response { get; set; }
}

public class Response {
   public Result result { get; set; }
   public string uri { get; set; }
}

public class Result {
   public Leads Leads { get; set; }
}

public class Leads {
   public Row[] row { get; set; }
}

public class Row {
   public string no { get; set; }
   public FL[] FL { get; set; }
}

public class FL {
   public string val { get; set; }
   public string content { get; set; }
}

You can also do the same with XML by choosing the Paste XML as Classes option.