C# 如何强制json.net将数据表列从整数反序列化为浮点

C# 如何强制json.net将数据表列从整数反序列化为浮点,c#,json.net,json-deserialization,C#,Json.net,Json Deserialization,我正在尝试将json分解为数据表。我的JSON如下所示: [{ “Id”:35, “名称”:“ABC”, “XVar”:0.078814, “伊瓦尔”:1 }, { “Id”:79, “名称”:“XYZ”, “XVar”:1.50, “伊瓦尔”:30.2 }] 我正在使用以下代码进行反序列化: var dataTable=(dataTable)JsonConvert.DeserializeObject(jsonString,(typeof(dataTable)) 问题是第二个对象的Y值序列化为3

我正在尝试将json分解为数据表。我的JSON如下所示: [{ “Id”:35, “名称”:“ABC”, “XVar”:0.078814, “伊瓦尔”:1 }, { “Id”:79, “名称”:“XYZ”, “XVar”:1.50, “伊瓦尔”:30.2 }]

我正在使用以下代码进行反序列化: var dataTable=(dataTable)JsonConvert.DeserializeObject(jsonString,(typeof(dataTable))


问题是第二个对象的Y值序列化为30,而不是30.2。我能做的最简单的事情是保存数据。欢迎所有想法。

您面临的问题是,默认情况下,用于序列化和反序列化
DataTable
类型的Json.Net
DataTableConverter
使用Json字符串中的第一个对象来检测每列的值类型。由于第一个对象上的
YVar
是一个整数,因此它假定该列上的所有其他对象也是整数

您有两种选择:

  • 将值格式化为浮点值,即使它们是int值,在这种情况下,json字符串也应该有“YVar”:1.0而不是“YVar”:1
  • 获取json.net源代码并根据您的需要进行定制。这将要求您使用
    JsonConvert.DeserializeObject(字符串值、类型、参数JsonConverter[]转换器)的重载。