11

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

有类似的东西

public object[] Values

我需要输入 , , 之类的值,30.0并且它们需要是's 和's。2754.002doubleint

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

4

1 回答 1

12

你最好的选择是反序列化成一个类型化的模型,其中模型表示Valuesint/ int[]/ 等。在必须是 / 的情况下可能是object因为object[]类型事先不为人所知,或者它是一个数组异类项),那么 JSON.NET 默认为 并非不合理long,因为当数组中混合有大小值时,这将导致最少的混淆。除此之外,它无法知道 ( 3L(a long) 中的值是什么,在 JSON 中序列化时,看起来与3(an 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;
    }
}
于 2013-07-29T08:01:46.987 回答