.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"
的直接引用后,问题就消失了。
我正在对 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"
的直接引用后,问题就消失了。