Serialization Newtonsoft无法处理大整数:如何使用十进制而不是Int64?

Serialization Newtonsoft无法处理大整数:如何使用十进制而不是Int64?,serialization,json.net,Serialization,Json.net,我正在使用Newtonsoft二进制文件将流序列化/反序列化为JSON对象: public static JObject LoadFrom(Stream stream) { return JObject.Load(new JsonTextReader(new StreamReader(stream))); } 如果流包含一些大整数,如18446744073709552000,则此调用将失败,并出现错误-JSON integer 18446744073709552000对于Int64来说

我正在使用Newtonsoft二进制文件将流序列化/反序列化为JSON对象:

public static JObject LoadFrom(Stream stream)
{
    return JObject.Load(new JsonTextReader(new StreamReader(stream)));
}
如果流包含一些大整数,如18446744073709552000,则此调用将失败,并出现错误-
JSON integer 18446744073709552000对于Int64来说太大或太小。这是因为Newtonsoft将其读取为整数而不是小数。现在我知道我可以通过调整源库和更改序列化中使用的数据类型来解决这个问题。但是,在这种情况下,我只能访问二进制文件,而不能访问源代码-是否有API级别的解决方法


谢谢

您是否使用最新版本的Json.Net?这对我来说很好,使用:


我不知道Stream是否是双精度值。你有没有试着表达谢意,这确实是个问题。我现在觉得自己很愚蠢。
class Program
{
    static void Main(string[] args)
    {
        string json = @"{ test: 18446744073709552000 }";
        MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json));
        JObject jo = LoadFrom(ms);
        JToken token = jo["test"];
        Console.WriteLine("value type = " + token.Type);
        Console.WriteLine("as string = " + token.ToString());
        decimal d = token.ToObject<decimal>();
        Console.WriteLine("as decimal = " + d);
    }

    public static JObject LoadFrom(Stream stream)
    {
        return JObject.Load(new JsonTextReader(new StreamReader(stream)));
    }
}
value type = Integer
as string = 18446744073709552000
as decimal = 18446744073709552000