Bob_Lozinak
Bob_Lozinak

Reputation: 19

No results from Json Deserialize

I am getting the json from zoho. I have a JSON like the following:

{
  "response": {
    "result": {
      "Leads": {
        "row": [
          {
            "no": "1",
            "FL": [
              {
                "content": "1325469000000679001",
                "val": "LEADID"
              },
              {
                "content": "1325469000000075001",
                "val": "SMOWNERID"
              },
              {
                "content": "Geoff",
                "val": "Lead Owner"
              },
            ]
          },
          {
            "no": "2",
            "FL": [
              {
                "content": "1325469000000659017",
                "val": "LEADID"
              },
              {
                "content": "1325469000000075001",
                "val": "SMOWNERID"
              },
              {
                "content": "Geoff",
                "val": "Lead Owner"
              },
            ]
          },

        ]
      }
    },
    "uri": "/crm/private/json/Leads/getRecords"
  }
}

I am using the following classes:

public class Row
{

    [JsonProperty(PropertyName = "row")]
    public List<Leads> row { get; set; }

}

public class Leads
{
    [JsonProperty(PropertyName = "no")]
    public string nbr { get; set; }

    [JsonProperty(PropertyName = "FL")]
    public List<Lead> FieldValues { get; set; }

}

public class Lead
{

    [JsonProperty(PropertyName = "content")]
    public string Content { get; set; }

    [JsonProperty(PropertyName = "val")]
    public string Val { get; set; }

}

I try to deserialize the json and get back nothing:

var mList = JsonConvert.DeserializeObject<IDictionary<string, Row>>(result);

This is the first time working with Json so any help would be appreciated!

Upvotes: 0

Views: 77

Answers (1)

Craig W.
Craig W.

Reputation: 18165

Usually when that happens it is because your class model for deserialization is wrong. Rather than trying to hand-craft the classes I like to use http://json2csharp.com. Just plug in your JSON and it gives you the necessary C# classes. In your case it provides the following.

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

public class Row
{
    public string no { get; set; }
    public List<FL> FL { get; set; }
}

public class Leads
{
    public List<Row> row { get; set; }
}

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

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

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

You can then deserialize into RootObject using:

var mList = JsonConvert.DeserializeObject<RootObject>(result);

Feel free to rename RootObject to whatever name you like better.

Upvotes: 3

Related Questions