簡體   English   中英

JSon 內容反序列化到 DataTable 錯誤地解析了 DataType

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM