簡體   English   中英

C# ASP.NET WebApi (2/Core 3.1) 大數的 Json 序列化問題

[英]C# ASP.NET WebApi (2/Core 3.1) Problem with Json serialization of big numbers

我有一個大數字 (Int64/UInt64) 被 ASP.NET Json 序列化四舍五入的問題。 這發生在 ASP.NET WebApi2 (.NET 4.5.2) 以及 ASP.NET Core WebApi (Core 3.1) 中。

這是我的 DTO 課程:

public class TestDTO
{
    public IEnumerable<long> BigNumbers { get; set; }
}

這是我的控制器方法:

[HttpGet]
public IHttpActionResult GetNumberTest()
{
    TestDTO dto = new TestDTO
    {
        BigNumbers = new long[]
        {
            121720000000004554,
            21720000000004554,
            1720000000004554,
            720000000004554,
        }
    };

    return Ok(dto);
}

這是結果:

{
  "bigNumbers": [
    121720000000004560,
    21720000000004550,
    1720000000004554,
    720000000004554
  ]
}

如您所見,前兩個數字已四舍五入(第一個向上四舍五入,第二個向下四舍五入),后兩個未四舍五入。 當然,這可能是致命的行為。 如何禁用此行為?

奇怪的是......當我通過Newtonsoft.Json(JsonConvert.SerializeObject)手動序列化DTO時,結果是正確的。

我知道當我將數字序列化為字符串時它可以工作,但在我看來這不是問題的真正解決方案。 我應該能夠依賴我的 DTO 的正確序列化。

有人可以幫我嗎?

事實證明,序列化的原始數據是正確的。 只是 SwaggerUi / Firefox 通過 JavaScript 的可視化導致了問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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