c#json读取树结构

本文关键字:结构 读取 c#json | 更新日期: 2023-09-27 18:15:12

我目前被困在一个需要为学校项目构建的应用程序中。我们需要从api链接中读取数据并将其显示在列表中,但我无法设置类的变量,因为它是树结构的,我不知道如何在响应中导航。答复如下。如何获取类中的字符串标题?与此响应中的标题相同?

    {
        Results: [
        {
            Id: 6413,
            Feed: 1,
            Title: "'Politieteam chemicaliën werkt onder te grote druk'",
            Summary: "Het team van de politie dat dagelijks met levensgevaarlijke chemicaliën te maken krijgt bij het ontmantelen van illegale drugslabs staat onder enorme druk. Sommige werkdagen duren 24 uur.<br /> ",
            PublishDate: "2015-09-30T14:32:28",
            Image: "http://media.nu.nl/m/m1oxo80axqo8_sqr256.jpg/politieteam-chemicalien-werkt-grote-druk.jpg",
            Url: "http://www.nu.nl/binnenland/4136038/politieteam-chemicalien-werkt-grote-druk.html",
            Related: [
                "http://nu.nl/binnenland/3932577/vaten-met-chemische-xtc-stoffen-gevonden-in-garage-breugel.html",
                "http://nu.nl/binnenland/3486693/drugslaboratorium-in-huis-heerlen.html",
                "http://nu.nl/buitenland/2614100/synthetische-drugs-verdringen-cocaine.html"
            ],
            Categories: [
                    {
                        Id: 50,
                        Name: "Algemeen"
                    },
                    {
                        Id: 53,
                        Name: "Binnenland"
                    }
                    ],
            IsLiked: false
        },
        {
            Id: 6414,
            Feed: 2,
            Title: "'Nederlandse betalingsdient Adyen gewaardeerd op 2 miljard'",
            Summary: "Een Amerikaans investeringsfonds, waar onder anderen Mark Zuckerberg van Facebook en Jack Dorsey van Twitter in participeren, heeft een investering gedaan in de Nederlandse betalingsverkeerdienst Adyen. &nbsp;",
            PublishDate: "2015-09-30T14:30:29",
            Image: "http://media.nu.nl/m/m1nxkfwa72hm_sqr256.jpg/nederlandse-betalingsdient-adyen-gewaardeerd-2-miljard.jpg",
            Url: "http://www.nu.nl/internet/4136034/nederlandse-betalingsdient-adyen-gewaardeerd-2-miljard.html",
            Related: [ ],
            Categories: [
                    {
                        Id: 57,
                        Name: "Internet"
                    },
                    {
                        Id: 91,
                        Name: "Economie"
                    },
                    {
                        Id: 94,
                        Name: "Ondernemen"
                    }
                ],
            IsLiked: false
        },
    }

我的失败代码:

    public async Task LoadData()
    {
        try
        {
            using (var client = new HttpClient())
            {
                var json = await client.GetStringAsync("HTTPLINKTOAPI");
                Data = JsonConvert.DeserializeObject<ObservableCollection<TestModel>>(json);
            }
        }
        catch { }
    }

测试模型类别:

    public sealed class TestModel
    {
        public string Id { get; set; }
        public string Title { get; set; }
    }

c#json读取树结构

首先,为JSON中的所有results-results对象创建一个容器(Results类(。它是对象(Result类(的集合(数组(,具有IdTitle等属性以及其他集合等。

public class ResultContent
{
    public IList<Result> Results { get; set; }
}
public class Result
{
    public int Id { get; set; }
    public string Title { get; set; }
}
var r = JsonConvert.DeserializeObject<ResultContent>(json);

另外,请去掉这个空的catch,否则您将不知道从API获取数据的过程中出了什么问题。清空catch总是非常糟糕的做法。