1

我对使用 JSON 还很陌生,我从 Web 服务获得的 JSON 响应有点问题。我已经尝试了一堆在线“JSON 到 c# 类”生成器,但它们似乎都不能与这个特定的 JSON 一起工作。我正在使用 Pocket API 以及我在下面得到的响应。谁能指出我将其格式化为课程的正确方向?

    {
    "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"
                }
            }
        }
    }
}

感谢您的任何指点,

4

2 回答 2

2

有点棘手,但这应该可行。(因为像这样的属性名称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; // <---
}
于 2013-09-16T15:18:23.437 回答
0

您尝试过 Json.NET吗:

JObject o = JObject.Parse("some json");
string name = (string)o["Name"];
于 2013-09-16T15:11:49.670 回答