Question

I am fairly new to working with JSON and I have a bit of an issue with a JSON response I am getting from a web service. I've tried a bunch of online "JSON to c# class" generators and none of them seem to work with this specific bit of JSON. I am working with the Pocket API and the response I get below. Can anyone point me in the right direction for formatting this in to classes?

    {
    "status": 1,
    "list": {
        "229279689": {
            "item_id": "229279689",
            "resolved_id": "229279689",
            "given_url": "http://www.grantland.com/blog/the-triangle/post/_/id/38347/ryder-cup-   preview",
            "given_title": "The Massive Ryder Cup Preview - The Triangle Blog - Grantland",
            "favorite": "0",
            "status": "0",
            "resolved_title": "The Massive Ryder Cup Preview",
            "resolved_url": "http://www.grantland.com/blog/the-triangle/post/_/id/38347/ryder-cup-preview",
            "excerpt": "The list of things I love about the Ryder Cup is so long that it could fill a (tedious) novel, and golf fans can probably guess most of them.",
            "is_article": "1",
            "has_video": "1",
            "has_image": "1",
            "word_count": "3197",
            "images": {
                "1": {
                    "item_id": "229279689",
                    "image_id": "1",
                    "src": "http://a.espncdn.com/combiner/i?img=/photo/2012/0927/grant_g_ryder_cr_640.jpg&w=640&h=360",
                    "width": "0",
                    "height": "0",
                    "credit": "Jamie Squire/Getty Images",
                    "caption": ""
                }
            },
            "videos": {
                "1": {
                    "item_id": "229279689",
                    "video_id": "1",
                    "src": "http://www.youtube.com/v/Er34PbFkVGk?version=3&hl=en_US&rel=0",
                    "width": "420",
                    "height": "315",
                    "type": "1",
                    "vid": "Er34PbFkVGk"
                }
            }
        }
    }
}

Thanks for any pointers,

Was it helpful?

Solution

A little bit tricky, but this should work. ( Because of the property names like 229279689)

var result = JsonConvert.DeserializeObject<Root>(json);

public class MyImage
{
    public string item_id { get; set; }
    public string image_id { get; set; }
    public string src { get; set; }
    public string width { get; set; }
    public string height { get; set; }
    public string credit { get; set; }
    public string caption { get; set; }
}

public class MyVideo
{
    public string item_id { get; set; }
    public string video_id { get; set; }
    public string src { get; set; }
    public string width { get; set; }
    public string height { get; set; }
    public string type { get; set; }
    public string vid { get; set; }
}

public class MyListItem
{
    public string item_id { get; set; }
    public string resolved_id { get; set; }
    public string given_url { get; set; }
    public string given_title { get; set; }
    public string favorite { get; set; }
    public string status { get; set; }
    public string resolved_title { get; set; }
    public string resolved_url { get; set; }
    public string excerpt { get; set; }
    public string is_article { get; set; }
    public string has_video { get; set; }
    public string has_image { get; set; }
    public string word_count { get; set; }
    public Dictionary<string, MyImage> images; // <---
    public Dictionary<string, MyVideo> videos; // <---
}

public class Root
{
    public int status;
    public Dictionary<string, MyListItem> list; // <---
}

OTHER TIPS

Did you try Json.NET:

JObject o = JObject.Parse("some json");
string name = (string)o["Name"];
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top