我正在使用Json.NET来反序列化服务器端的请求。
有一种类似的东西
public object[] Values
我需要输入像30.0
、27
、54.002
这样的值,它们需要是double
和int
。
Json.NET有一个名为FloatParseHandling的反序列化属性,但没有类似IntParseHandling的选项。所以问题是如何将整数反序列化为int
您最好的选择是反序列化为一个类型化模型,其中模型表示Values
是int
/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;
}
}