.NET Core 的 ulong 反序列化失败

Deserialization of ulong failing for .NET Core

我正在对 ulong:

进行非常简单的反序列化
    static void Main(string[] args)
    {
        try
        {
            var data = ulong.MaxValue;
            var serialized = JsonConvert.SerializeObject(data);
            var res = JsonConvert.DeserializeObject<ulong>(serialized);
            Console.WriteLine(res);
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex);
        }
        Console.ReadKey();
    }

在普通的控制台应用程序中,这可以正常工作。但是在 .NET Core 控制台应用程序中执行此操作时,它会失败并出现以下错误:

JSON integer 18446744073709551615 is too large or small for an Int64. Path '', line 1, position 20.

在我看来,这是在尝试转换为 long 而不是 ulong。这是怎么回事?这是 JSON .NET 或 .NET Core 中的错误吗?

这是 Newtonsoft.Json 中的一个错误,将从 9.0.2 开始修复(相关 issue)。

我已经在我的项目中检查了您的代码,在 project.json 中添加对 "Newtonsoft.Json": "9.0.2-beta001" 的直接引用后,问题就消失了。