[英]JSon content Deserialization to DataTable wrongly parsing DataType
我有一個 webapi,它返回 json 序列化的 DataTable 結果集,在客戶端,當我嘗試反序列化時,列的值將從 float 轉換為 int。 任何人都可以建議我如何解決這個問題。 我瀏覽了很多帖子,但沒有找到可行的解決方案。
以下是使用控制台應用重現問題的示例片段。
string jsonString = "[{\"Column1\":1.0,\"Column2\":0.0,\"Column3\":1.0}]";
DataTable dt= JsonConvert.DeserializeObject<DataTable>(jsonString);
現在訪問 dt.Rows[0][0] 將返回 1 而不是 1.0。
如果有關於從 WebApi 傳遞數據表的不同方式的任何其他建議也是可以接受的。 下面是 web api 代碼片段
[HttpPost]
public IHttpActionResult GetData(string some parameters)
{
DataTable dt = new DataTable(); //some datatable
Ok(dt);
}
聲明 Json Serializer 設置來處理浮點數...
string jsonString = "[{\"Column1\":1.0,\"Column2\":0.0,\"Column3\":1.0}]";
JsonSerializerSettings settings = new JsonSerializerSettings
{
FloatParseHandling = FloatParseHandling.Decimal
};
並在反序列化時提供設置...
var dt = JsonConvert.DeserializeObject<DataTable>(jsonString, settings);
我想補充一點,以這種方式使用 DataTable 可能不是一個好主意 - 值得記住的是,源 DataTable 上的任何元數據,例如鍵和約束,在另一端反序列化時都將丟失。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.