gpt4 book ai didi

c# - 解析 DataType 时 JSON 反序列化到 DataTable 问题

转载 作者:行者123 更新时间:2023-11-30 18:14:27 24 4
gpt4 key购买 nike

当我尝试反序列化 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

这就是为什么您的 QtyRate 字段被正确映射的原因。

我建议使用与您的 JSON 匹配的严格类型对象,然后将其反序列化到其中。

如果需要,您还可以创建自己的 DataTableConverter 实现。

关于c# - 解析 DataType 时 JSON 反序列化到 DataTable 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50363896/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com