加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 序列化无符号整数(ulong)数组时Json.NET崩溃

发布时间:2020-12-15 06:27:00 所属栏目:百科 来源:网络整理
导读:尝试序列化ulong数组时出现解析器错误,看起来Json.NET库不检查整数是有符号还是无符号;任何人都知道解决方法吗?或任何其他可以处理unsigned int的.NET Json库? *编辑:以下代码; * 序列化很好,但是当它反序列化时会抛出错误;看起来它不能满足unsigned int
尝试序列化ulong数组时出现解析器错误,看起来Json.NET库不检查整数是有符号还是无符号;任何人都知道解决方法吗?或任何其他可以处理unsigned int的.NET Json库?

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

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:DevelopmentReleasesJsonWorkingSrcNewtonsoft.JsonJsonTextReader.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的值.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读