2013-07-29 5 views
8

私は、Json.NETを使用してサーバー側の要求を逆シリアル化しています。長整数型ではなく、整数型を整数に逆シリアル化できますか?

私は30.02754.002のような値に置く必要がある、と彼らはdoubleさんとint年代である必要はあり

public object[] Values 

のようなものがあります。

Json.NETはFloatParseHandlingと呼ばれる直列化復元性を有しているが、をIntParseHandlingのようなオプションはありません。だから質問はintに整数を逆シリアル化できますか?

答えて

9

あなたの最善の策は、モデルがValuesはおそらくタイプので(object/object[]するを持っているものの場合はint/int[] /などであることを表現型付けされたモデルにデシリアライズすることですあらかじめよく知られていないか、異種のアイテムの配列です)、JSON.NETのデフォルト値はlongです。これは、大きな値と小さい値が混在しているときに混乱が最小限に抑えられるためです配列。 JSONでシリアル化されたときの値は、3Llong)の3int)と同じように見えます。あなたは、単にポストプロセスValuesができ、longint範囲内であることどんな探し:

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; 
    } 
} 
関連する問題