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

本文关键字:错误 错误数据 数据源 类型 无效 GridView 数据 Json 反序列化 | 更新日期: 2023-09-27 17:57:31

我对处理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。

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

谢谢你,杜安。

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

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

GridView1.DataSource = personDetail.PersonDetails;

它应该起作用。