1

我正在尝试将 json 反序列化为数据表。我的 JSON 如下所示: [{ "Id": 35, "Name": "ABC", "XVar": 0.078814, "YVar": 1 }, { "Id": 79, "Name": "XYZ", “XVar”:1.50,“YVar”:30.2 }]

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

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

4

1 回答 1

2

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

您有 2 个选项:

  1. 将您的值格式化为浮点数,即使它们是 int 值,在这种情况下,您的 json 字符串应该有 "YVar": 1.0而不是 "YVar": 1
  2. 获取 json.net DataTableConverter源并根据您的需要进行定制。这将要求您使用JsonConvert.DeserializeObject(string value, Type type, params JsonConverter[] converters)
于 2013-07-11T20:47:29.623 回答