11

サーバー側でリクエストを逆シリアル化するために Json.NET を使用しています。

のようなものがあります

public object[] Values

30.0、、、などの値を入力する必要があり2754.002それらは と である必要がありdoubleますint

Json.NET にはFloatParseHandlingという逆シリアル化プロパティがありますが、 IntParseHandlingのようなオプションはありません。問題は、整数をどのように逆シリアル化できるかということintです。

4

1 に答える 1

12

あなたの最善の策は、モデルが/ /などであると表現する型付きモデルに逆シリアル化することです./でなければならないものの場合(おそらく型が事前によく知られていないか、異種のアイテム) の場合、JSON.NET が既定値を に設定することは不合理ではありません。これは、配列内に大きな値と小さな値が混在している場合に混乱を最小限に抑えるためです。その上、途中で値が何であったかを知る方法がありません ( (a ) は、JSON でシリアル化すると(an ) と同じに見えます)。単純に後処理して、範囲内にあるものを探すことができます。Valuesintint[]objectobject[]long3Llong3intValueslongint

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 に答える