JSON.NET以索引为名称进行json对象



我正在尝试使用JSON.NET从Web服务解析JSON,Web服务以以下格式返回数据:

{
    "0": {
        "ID": 193,
        "Title": "Title 193",
        "Description": "Description 193",
        "Order": 5,
        "Hyperlink": "http://someurl.com"
    },
    "1": {
        "ID": 228,
        "Title": "Title 228",
        "Description": "Description 228",
        "Order": 4,
        "Hyperlink": "http://someurl.com"
    },
    "2": {
        "ID": 234,
        "Title": "Title 234",
        "Description": "Description 234",
        "Order": 3,
        "Hyperlink": "http://someurl.com"
    }
}

我使用JSON2SHARP从JSON生成类:

public class __invalid_type__0
{
    public int ID { get; set; }
    public string Title { get; set; }
    public string Description { get; set; }
    public int Order { get; set; }
    public string Hyperlink { get; set; }
}
public class __invalid_type__1
{
    public int ID { get; set; }
    public string Title { get; set; }
    public string Description { get; set; }
    public int Order { get; set; }
    public string Hyperlink { get; set; }
}
public class __invalid_type__2
{
    public int ID { get; set; }
    public string Title { get; set; }
    public string Description { get; set; }
    public int Order { get; set; }
    public string Hyperlink { get; set; }
}
public class RootObject
{
    public __invalid_type__0 __invalid_name__0 { get; set; }
    public __invalid_type__1 __invalid_name__1 { get; set; }
    public __invalid_type__2 __invalid_name__2 { get; set; }
}

然后我清理了班级,并留下以下内容:

public class Articles
{
    public int ID { get; set; }
    public string Title { get; set; }
    public string Description { get; set; }
    public int Order { get; set; }
    public string Hyperlink { get; set; }
}
public class FeaturedArticles
{
    public List<Articles> articles { get; set; }
}

当我尝试将数据加载到我的单例中以供应用程序使用:

    private void fetchFeaturedArticles()
    {
        var client = new RestClient (_featuredArticlesJsonUrl);
        var request = new RestRequest (Method.GET);
        var response = client.Execute (request);
        _featuredArticles = JsonConvert.DeserializeObject<FeaturedArticles> (response.Content);
        foreach (Articles a in _featuredArticles.Articles)
            Console.WriteLine (a.Title);
    }

我发现这些文章没有被判决。

我已经验证了JSON数据是从Web服务返回的。我相信这个问题存在于我的JSON提要的结构中,在此,从提要中返回的每个项目都有一个等于索引的索引,该项目正在返回。

我是使用json.net的新手,所以我不确定该如何继续;我无法更改JSON提要的结构,但需要消耗其数据。有人有任何建议吗?

您不需要FeaturedArticles类,您可以将JSON验证为Dictionary<string, Articles>

private void fetchFeaturedArticles()
{
    var client = new RestClient (_featuredArticlesJsonUrl);
    var request = new RestRequest (Method.GET);
    var response = client.Execute (request);
    Dictionary<string, Articles> _featuredArticles = JsonConvert.DeserializeObject<Dictionary<string, Articles>>(response.Content);
    foreach (string key in _featuredArticles.Keys)
    {
        Console.WriteLine(_featuredArticles[key].Title);
    }
}

演示:https://dotnetfiddle.net/ze1bml

相关内容

  • 没有找到相关文章

最新更新