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