序列化无符号整数(ulong)数组时,Json.NET崩溃 [英] Json.NET crashes when serializing unsigned integer (ulong) array

查看:173
本文介绍了序列化无符号整数(ulong)数组时,Json.NET崩溃的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

尝试序列化ulong数组时出现解析器错误,看起来Json.NET库不检查整数是有符号还是无符号;任何人都知道解决方法吗?或任何其他可以处理unsigned int的.NET Json库?

Getting a parser error when trying to serialize a ulong array, looks like the Json.NET library isnt checking if the integer is signed or unsigned; any one know of a workaround for this? or any other .NET Json library that can handle unsigned int's?

* 编辑:代码如下; *
序列化很好,但是当它反序列化时会抛出错误;看起来它不能满足unsigned int查看堆栈跟踪;

* code below; * It serializes fine, but when its deserializing it throws an error; Looks like it doesnt cater for the unsigned int from looking at the stack trace;

NewTonsoft.Json.JsonReaderException : {"JSON integer 18446744073709551615 is too large or small for an Int64."}

Value was either too large or too small for an Int64.
   at System.Number.ParseInt64(String value, NumberStyles options, NumberFormatInfo numfmt)
   at System.Convert.ToInt64(String value, IFormatProvider provider)
   at Newtonsoft.Json.JsonTextReader.ParseNumber() in d:\Development\Releases\Json\Working\Src\Newtonsoft.Json\JsonTextReader.cs:line 1360





   class Program
        {
            static void Main(string[] args)
            {
                string output = JsonConvert.SerializeObject(new ulong[] {ulong.MinValue, 20, 21, 22, ulong.MaxValue});
                Console.WriteLine(output);

                ulong[] array = JsonConvert.DeserializeObject<ulong[]>(output);
                Console.WriteLine(array);

                Console.ReadLine();
            }
        }


推荐答案

你'对了,在这种情况下,JSON.Net不会处理大于 long.MaxValue 的值。

You're right, JSON.Net doesn't handle values larger than long.MaxValue in this case.

I除了修改库的源代码之外,没有找到任何修改该行为的方法。作为解决方法,您可以将其反序列化为 decimal [] ,然后将其转换为 ulong []

I didn't find any way to modify that behavior, except by modifying the source code of the library. As a workaround, you could deserialize it as decimal[] and then convert that into ulong[].

这篇关于序列化无符号整数(ulong)数组时,Json.NET崩溃的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆