Code Bye

JsonConvert.DeserializeObject()把json转为datatable数据

使用Newtonsoft.Json.Converters.JsonConvert.DeserializeObject();
例如:[{“RId”:1,”EmpId”:2,”EmployeeName”:”\u674e\u4e07\u7ae0″,”WageYear”:2015,”WageMonth”:1,”Pension”:0,”Medicare”:0,”UnemploymentInsurance”:0,”HousingFund”:0,”WomenSubsidy”:0,”OtherSubsidy”:0,”Foregift”:0,”ReceiveDebt”:0,”Tax”:0,”Wage”:1080,”WageTotal”:1080,”RealWage”:1080,”TeaWage”:1080,”Debt”:0},{“RId”:1,”EmpId”:3,”EmployeeName”:”\u97e6\u5b97\u8d35″,”WageYear”:2015,”WageMonth”:1,”Pension”:0,”Medicare”:0,”UnemploymentInsurance”:0,”HousingFund”:0,”WomenSubsidy”:0,”OtherSubsidy”:0,”Foregift”:0,”ReceiveDebt”:0,”Tax”:0,”Wage”:390,”WageTotal”:390,”RealWage”:390,”TeaWage”:390,”Debt”:0},{“RId”:1,”EmpId”:4,”EmployeeName”:”\u5170\u6c38\u6e05″,”WageYear”:2015,”WageMonth”:1,”Pension”:124.08,”Medicare”:40.05,”UnemploymentInsurance”:10.01,”HousingFund”:40,”WomenSubsidy”:0,”OtherSubsidy”:0,”Foregift”:0,”ReceiveDebt”:0,”Tax”:0,”Wage”:768,”WageTotal”:553.86,”RealWage”:553.86,”TeaWage”:768,”Debt”:0}]

使用DataTable dt = JsonConvert.DeserializeObject<DataTable>(inserted);转换以后,有小数的数字都被四舍五入成整数了,怎么做才能保留原来的小数呢?


20分
json对数据是不会做处理的,你原本数据多少就是多少,从别处找找原因

40分
你当时是用什么东西转成Json的,还用什么类型转回来,然后再想如何填充进DataTable里

20分
是否需要定义DataTable的column的类型。
引用 3 楼 neil_nature 的回复:

是否需要定义DataTable的column的类型。

定义过DataTable dt的那些数字类型为decimal了,还是不行。
没有人使用过Newtonsoft.net的反序列转换为DataTable吗?


10分
数字转化为字符串格式存储到json中

10分
自动转换的时候被当成整形了吧。你试试看定义一下DataTable中对应的column类型。
dt.Columns[1].DataType = typeof(float);
实在没办法了,只好放弃直接转DataTable。使用曲线的方法解决了这个四舍五入的问题。
我是先转为List<model>,再转转list为DataTable。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明JsonConvert.DeserializeObject()把json转为datatable数据