Mvc Controller.Json方法将长数3458764513820540917序列化为3458764513820541000。我需要具有int64属性的POCO。如何将 C# long 序列化为 json 字符串“3458764513820540917”?
JavaScript 中的所有数字实际上都是 64 位浮点数。
在我看来,您在客户端遇到了该格式的范围/精度限制,而不是(反)序列化的问题。
我知道这个问题很久以前就被问过,但对于那些遇到类似问题的人来说,这里有一个更新的解决方案。
在尝试通过 JSON 从 Asp.Net C# 后端发送
UInt64
字段到我的 Angular 前端时,我遇到了类似的问题。收到的值四舍五入为最小的 3 位有效数字。
4070661594142490595 => 4070661594142490600
我能够使用设置为“
WriteAsString”的
System.Text.Json.Serialization.JsonNumberHandling
属性来解决它。
[Serializable]
public class MyStruct
{
[JsonNumberHandling(JsonNumberHandling.WriteAsString)]
public UInt64 ID { get; set; } = 0;
public int Data{ get; set; } = 0;
}
在 Angular 方面,当通过
http.get
接收 JSON 时,我使用 BigInt
作为相应的属性。
export interface MyStruct
{
readonly ID: BigInt;
readonly Data: number;
}