我有一个webapi,它返回json序列化的DataTable结果集,在客户端,当我尝试反序列化时,列的值将从float转换为int。有人能建议我如何解决这个问题吗。我浏览了很多帖子,但没有找到有效的解决方案。
以下是使用控制台应用程序重新处理该问题的示例片段。
string jsonString = "[{"Column1":1.0,"Column2":0.0,"Column3":1.0}]";
DataTable dt= JsonConvert.DeserializeObject<DataTable>(jsonString);
现在访问dt。行[0][0]将返回1而不是1.0。
如果对从WebApi传递数据表的不同方式有任何其他建议,也是可以接受的。下面是web api代码片段
[HttpPost]
public IHttpActionResult GetData(string some parameters)
{
DataTable dt = new DataTable(); //some datatable
Ok(dt);
}
声明Json序列化程序设置以处理浮点。。。
string jsonString = "[{"Column1":1.0,"Column2":0.0,"Column3":1.0}]";
JsonSerializerSettings settings = new JsonSerializerSettings
{
FloatParseHandling = FloatParseHandling.Decimal
};
并在取消序列化时提供设置。。。
var dt = JsonConvert.DeserializeObject<DataTable>(jsonString, settings);
我想补充一点,以这种方式使用DataTable可能不是一个好主意——值得记住的是,在另一端取消序列化时,源DataTable上的任何元数据,如键和约束,都会丢失。