将 Json 数据反序列化为 c# 以便在 GridView 中使用 - 错误数据源是无效类型

问题描述 投票:0回答:1

我对使用 C# (v5.0) 和 Json 数据 (Newtonsoft.Json v6.0) 比较陌生,并且在尝试填充 .Net 4.5 GridView 控件时寻求解决错误的帮助。 Web 服务返回的示例 Json 数据是:

{
    PersonDetails: [
        {
            Book: "10 ",
            FirstName: "Delbert",
            LastName: "Hinson",
            Remarks: null
        },
        {
            Book: "5 ",
            FirstName: "GUY",
            LastName: "HINSON",
            Remarks: null
        },
        {
            Book: "13 ",
            FirstName: "JAMES",
            LastName: "HINSON",
            Remarks: null
        },
        {
            Book: "7 ",
            FirstName: "JOHN, SR",
            LastName: "HINSON",
            Remarks: null
        }
    ]
}

Json2CSharp.com 生成的我的班级是:

namespace VAPerson
{

    public class PersonDetail
    {
        public string Book { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public object Remarks { get; set; }
    }

    public class RootObject
    {
        public List<PersonDetail> PersonDetails { get; set; }
    }

}

我的反序列化代码是:

    protected void Page_Load(object sender, EventArgs e)
    {
        string lastName = "hinson";
        var url = string.Format(baseUrl, lastName);
        var syncClient = new WebClient();
        var content = syncClient.DownloadString(url);

        var personDetail = JsonConvert.DeserializeObject<RootObject>(content);

        GridView1.DataSource = personDetail;
        GridView1.DataBind();

    }

反序列化正常,返回4行数据。尝试指定 GridView.DataSource 时收到错误:

数据源是无效类型。它必须是 IListSource、IEnumerable 或 IDataSource。

看来我需要将反序列化结果转换为可接受的格式,如错误消息所示。在我迄今为止的研究中,我无法做到这一点。非常感谢任何帮助、示例代码和建议。

谢谢 - 杜安。

c# json gridview serialization .net-4.5
1个回答
0
投票

您绑定的是容器对象,而不是列表本身。改成:

GridView1.DataSource = personDetail.PersonDetails;

它应该有效。

© www.soinside.com 2019 - 2024. All rights reserved.