![](/img/trans.png)
[英]JSON custom serialization and deserialization of existing classes in C# asp.net core
[英]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.