2017-03-09 97 views
2

我做的ulong一个非常简单的反序列化:ULONG的反序列化失败为.NET核心

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的核心控制台应用程序执行此操作时,它失败,出现以下错误:

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

在我看来,这是试图转换为long而不是ulong。这里有什么事?这是JSON .NET还是.NET Core的错误?

回答

3

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

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