ASP.NET C#读取数据表时意外的JSON标记
我在ASP.NET中工作,在尝试将JSON字符串序列化到DataTable中时遇到以下错误: 读取数据表时出现意外的JSON标记。期待星光,明白了吗 StartObject 我读过其他有同样错误的帖子,看起来这个错误通常发生在JSON对象无效的时候。不过,我已经在JsonLint中验证了我的JSON,一切正常。我不是在构建JSON,而是从PaySimpleAPI接收它。我在我的软件的其他部分也使用了非常类似的方法,它工作得很好,所以我无法解释为什么会出现错误 非常感谢您的帮助。我没有很多使用JSON的经验 这是我的密码:ASP.NET C#读取数据表时意外的JSON标记,c#,asp.net,json,json.net,unexpected-token,C#,Asp.net,Json,Json.net,Unexpected Token,我在ASP.NET中工作,在尝试将JSON字符串序列化到DataTable中时遇到以下错误: 读取数据表时出现意外的JSON标记。期待星光,明白了吗 StartObject 我读过其他有同样错误的帖子,看起来这个错误通常发生在JSON对象无效的时候。不过,我已经在JsonLint中验证了我的JSON,一切正常。我不是在构建JSON,而是从PaySimpleAPI接收它。我在我的软件的其他部分也使用了非常类似的方法,它工作得很好,所以我无法解释为什么会出现错误 非常感谢您的帮助。我没有很多使用JS
protected void LoadPaymentSchedule(int customerId)
{
// This method returns an object from Paysimple's API
RecurringPaymentResponse recurringPayment = StudioPaymentAccess.GetStudioPaymentSchedule(customerId);
// Convert the Json response to DataTable
string a = JsonConvert.SerializeObject(recurringPayment);
DataTable tblSchedules = JsonConvert.DeserializeObject<DataTable>(a);//**error occurs here
// Bind to gridview
if (tblSchedules.Rows.Count > 0)
{
grdPaymentSchedules.DataSource = tblSchedules;
grdPaymentSchedules.DataBind();
}
else
{
//No schedules found
}
}
为了反序列化
数据表
,它看起来像是预期的JSON
一个快速解决方法是调整序列化,以便它写出一个数组:
string a=JsonConvert.SerializeObject(新[]{recurringPayment});
另一种选择是直接绑定到返回模型,假设
DataTable
不是必需的。例如,请参阅的答案。是否尝试将RecurringPaymentResponse对象反序列化为System.Data.DataTable?
如果您试图将RecurringPaymentResponse对象反序列化为System.Data.DataTable,它肯定会失败。因为两个类的属性不相同
您应该直接更新gridview行
GridViewRow row = (GridViewRow) GridView1.Rows[0]; //First row
row.Cells[0].Text = recurringPayment.CustomerId;
row.Cells[1].Text = recurringPayment.CustomerFirstName;
row.Cells[2].Text = recurringPayment.CustomerLastName;
//and so on.....
DataTable要求数组为
{
"data":
[
{"ID":1,"Name":"Simon"},
{"ID":2,"Name":"Alex"}
]
}
我试图反序列化,但没有发现错误,反序列化运行成功。
这工作做得很好!非常感谢!当然,回想起来似乎很明显。
{
"data":
[
{"ID":1,"Name":"Simon"},
{"ID":2,"Name":"Alex"}
]
}