2013-07-04 27 views
0

我想將一個json序列化爲一個數據表。我的JSON看起來象下面這樣: [{ 「ID」:35, 「名稱」: 「ABC」, 「XVAR」:0.078814, 「YVar」:1 }, { 「ID」:79, 「名稱」: 「XYZ」, 「XVAR」:1.50, 「YVar」:30.2 }]如何強制json.net將DataTable列從整數反序列化到浮點數

我使用以下代碼來反序列化: VAR的dataTable =(數據表)JsonConvert.DeserializeObject( jsonString,(typeof(DataTable)));

問題是第二個對象的Y值被序列化爲30而不是30.2。我可以做的最簡單的事情是保存數據。所有想法都歡迎。

回答

1

您面臨的問題是,默認情況下,用於序列化和反序列化DataTable類型的Json.Net DataTableConverter使用json字符串中的第一個對象來檢測每列的值的類型。由於第一個對象上的YVar是一個整數,因此它假定所有其他對象在該列上也是整數。

你有2種選擇:

  1. 格式的值浮動,即使他們是int類型,在這種情況下,你的JSON字符串應該有 「YVar」:1.0,而不是 「YVar」:
  2. 以json.net DataTableConverter來源並根據您的需要定製它。這將要求您使用過載JsonConvert.DeserializeObject(string value, Type type, params JsonConverter[] converters)