ServiceStack : 将长数字序列化为字符串
ServiceStack : Serialize long number to string
在我的 C# 代码中,我有一个 long
变量,例如
public long ID { get; set; }
现在当 ServiceStack returns 它到 Web 浏览器时,它被序列化为
{ "id" : 97786707294275442 }
这是错误的,因为 long
在 C#
中的范围是 2^63
但是在Javascript中,Number.MAX_SAFE_INTEGER是2^53-1,也就是9007199254740991
因为97786707294275442大于9007199254740991,在JS中四舍五入
当long
的值大于Number.MAX_SAFE_INTEGER时,是否可以让ServiceStack将long
序列化为string
?
JsConfig<long>.RawSerializeFn = (long num) =>
{
if (num > 9007199254740991L || num < -9007199254740991L)
return string.Format("\"{0}\"", num);
return num.ToString();
};
这是最好的方法吗?
在我的 C# 代码中,我有一个 long
变量,例如
public long ID { get; set; }
现在当 ServiceStack returns 它到 Web 浏览器时,它被序列化为
{ "id" : 97786707294275442 }
这是错误的,因为 long
在 C#
但是在Javascript中,Number.MAX_SAFE_INTEGER是2^53-1,也就是9007199254740991
因为97786707294275442大于9007199254740991,在JS中四舍五入
当long
的值大于Number.MAX_SAFE_INTEGER时,是否可以让ServiceStack将long
序列化为string
?
JsConfig<long>.RawSerializeFn = (long num) =>
{
if (num > 9007199254740991L || num < -9007199254740991L)
return string.Format("\"{0}\"", num);
return num.ToString();
};
这是最好的方法吗?