我正在通过 ajax 将此关注对象发布到 asp.net Web 服务器:
$.ajax({
type: "POST",
url: "/home.aspx",
contentType:'application/json',
data:JSON.stringify({d1:42.00,d2:3.14,d3:'17'})
});
当 JSON.Net 反序列化对象时
JsonConvert.DeserializeObject<DataTable>(stringfied);
d2和d3看成int,结果是:d1 = 42, d2 = 3, d3 = 17
问题与这篇文章完全一样:http: //digitalbush.com/2011/04/24/asp-net-mvc3-json-decimal-binding-woes/
我无法使用本文来解决此问题,因为我使用的是 Web 表单。
有什么出路吗?
更新
实际上上面的字符串是错误的,这个反映了问题,我只是在Linqpad上转载:
JsonConvert.DeserializeObject<DataTable>("[{\"Price\":3},{\"Price\":3.33}]").Dump();
数据表的结果是:3 and 3 not 3 and 3.33
如果我使用DeserializeObject
方法,它可以正常工作,但我需要使用 Datatable,因为我在应用程序上有一个通用函数可以将 Datatable 转换为 MSExcel。