当我尝试反序列化 JSon 时,列的值将从 float 转换为 int。
下面是 Json:-
{{
"ImportData": [
{
"ProdName": "Pipes",
"Qty": 11.3,
"Rate": 610.3,
"Discount": 20,
},
{
"ProdName": "Drill Machine",
"Qty": 12,
"Rate": 400.3,
"Discount": 10.3,
},
{
"ProdName": "Cement",
"Qty": 50,
"Rate": 1110.5,
"Discount": 15.5,
}
],
"TypeId": 1,
"SourceId": 1,
"CreatedBy": 35
}}
我已经声明了 Json Serializer 设置来处理 float ...
JsonSerializerSettings settings = new JsonSerializerSettings
{
FloatParseHandling = FloatParseHandling.Decimal
};
并在反序列化时提供设置...
dt = JsonConvert.DeserializeObject<DataTable>(objParam["ImportData"].ToString(),settings);
dt 输出:-
ProdName Qty Rate Discount
------------------------------------------------
Pipes 11.3 610.3 20
Drill Machine 12 400.3 10
cement 50 1110.5 15
预期输出:-
ProdName Qty Rate Discount
------------------------------------------------
Pipes 11.3 610.3 20
Drill Machine 12 400.3 10.3
cement 50 1110.5 15.5
谁能建议我如何解决这个问题?我浏览了很多帖子,但没有找到可行的解决方案。
最佳答案
这里的问题是 Json.NET 的 DataTableConverter
仅从第一行中存在的值分配 DataColumn.DataType
。
这就是为什么您的 Qty 和 Rate 字段被正确映射的原因。
我建议使用与您的 JSON 匹配的严格类型对象,然后将其反序列化到其中。
如果需要,您还可以创建自己的 DataTableConverter
实现。
关于c# - 解析 DataType 时 JSON 反序列化到 DataTable 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50363896/