如何将整数反序列化为int,而不是long

本文关键字:long int 整数 反序列化 | 更新日期: 2023-09-27 18:25:13

我正在使用Json.NET来反序列化服务器端的请求。

有一种类似的东西

public object[] Values

我需要输入像30.02754.002这样的值,它们需要是doubleint

Json.NET有一个名为FloatParseHandling的反序列化属性,但没有类似IntParseHandling的选项。所以问题是如何将整数反序列化为int

如何将整数反序列化为int,而不是long

您最好的选择是反序列化为一个类型化模型,其中模型表示Valuesint/int[]/等。如果某个具有object/object[](可能是因为该类型事先不为人所知,或者它是一个异构项数组),那么JSON.NET默认为long也不无道理,因为当数组中混合了大小值时,这将导致最少的混乱。除此之外,它无法知道在(3L(一个long)中的值是什么,当在JSON中序列化时,看起来与3(一个int)相同)。您可以简单地发布处理Values,并查找任何属于long且在int范围内的:

for(int i = 0 ; i < Values.Length ; i++)
{
    if(Values[i] is long)
    {
        long l = (long)Values[i];
        if(l >= int.MinValue && l <= int.MaxValue) Values[i] = (int)l;
    }
}