将 Json 数据反序列化为 c# 以便在 GridView 中使用 - 错误数据源是无效类型
Deserializing Json data to c# for use in GridView - Error Data source is an invalid type
我对使用 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
}
]
}
我的 class,由 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 时收到错误消息:
Data source is an invalid type. It must be either an IListSource,
IEnumberable or IDataSource.
看来我需要将反序列化结果转换为可接受的格式,如错误消息所示。在我迄今为止的研究中,我无法做到这一点。非常感谢任何帮助、示例代码和建议。
谢谢你 - 杜安。
您绑定的是容器对象,而不是列表本身。将其更改为:
GridView1.DataSource = personDetail.PersonDetails;
它应该可以工作。
我对使用 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
}
]
}
我的 class,由 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 时收到错误消息:
Data source is an invalid type. It must be either an IListSource, IEnumberable or IDataSource.
看来我需要将反序列化结果转换为可接受的格式,如错误消息所示。在我迄今为止的研究中,我无法做到这一点。非常感谢任何帮助、示例代码和建议。
谢谢你 - 杜安。
您绑定的是容器对象,而不是列表本身。将其更改为:
GridView1.DataSource = personDetail.PersonDetails;
它应该可以工作。