JSon内容对DataTable的反序列化错误地分析了DataType



我有一个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上的任何元数据,如键和约束,都会丢失。

最新更新