ULONG的反序列化失败为.NET核心
问题描述:
我做的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的错误?
答
这是Newtonsoft.Json中的一个bug,将从9.0.2
(相关issue)开始修复。
我已经在我的项目中检查了您的代码,并在添加直接引用"Newtonsoft.Json": "9.0.2-beta001"
的project.json
后,问题消失了。