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)));

問題は、2 番目のオブジェクトの Y 値が 30.2 ではなく 30 としてシリアル化されることです。データを保存するためにできる最も簡単なことは何ですか。すべてのアイデアを歓迎します。

4

1 に答える 1

2

あなたが直面している問題は、デフォルトではDataTableConverter、型をシリアライズおよびデシリアライズするために使用される Json.Net がDataTable、json 文字列内の最初のオブジェクトを使用して、各列の値の型を検出することです。最初のオブジェクトは整数であるためYVar、その列の他のすべてのオブジェクトも整数であると想定します。

次の 2 つのオプションがあります。

  1. 値が int 値であっても float としてフォーマットします。この場合、json 文字列には "YVar": 1ではなく"YVar": 1.0が必要です。
  2. json.net DataTableConverterソースを取得し、ニーズに合わせて調整します。これには、のオーバーロードを使用する必要がありますJsonConvert.DeserializeObject(string value, Type type, params JsonConverter[] converters)
于 2013-07-11T20:47:29.623 に答える