ServiceStack:将长号序列化为字符串

时间:2015-09-21 12:34:16

标签: servicestack-text

在我的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

1 个答案:

答案 0 :(得分:1)

JsConfig<long>.RawSerializeFn = (long num) =>
            {
                if (num > 9007199254740991L || num < -9007199254740991L)
                    return string.Format("\"{0}\"", num);
                return num.ToString();
            };

这是最好的方式吗?