2013-07-29 14 views
8

Sunucu tarafında istekleri kaldırmak için Json.NET kullanıyorum. Ben 30.0, 27, 54.002 gibi değerler koymak gerekir ve onlar double 'ler ve int' ler olması gerekiyorTam sayıyı int'ye kadar niçin deserialize edebilirim?

public object[] Values 

gibi bir şey yoktur

.

Json.NET FloatParseHandling adlı bir seri kaldırma özelliğine sahiptir, ancak IntParseHandling gibi hiçbir seçeneği yoktur. Yani soru olup, tamsayıları int için nasıl deserialize edebilirim?

cevap

9

En iyi bahis modeli Values bir int/int[]/vb sahiptir şey olması durumunda object/object[] (muhtemelen çünkü olmaktır olduğunu ifade eden bir Yazılan modeline serisini olan tip önceden bilinmemektedir, ya da heterojen öğeler bir dizi), o zaman JSON.NET varsayılan olarak long için mantıksız değildir, çünkü bu büyük ve küçük değerler bir karışım olduğunda en az karışıklık neden olur dizi. Bunun yanı sıra, JSON içinde serileştirildiğinde (3L (bir long) değerin yol üzerinde ne olduğunu bilmenin bir yolu yoktur, 3 (bir int) ile aynıdır). Sadece Values süreç sonrası ve long olduklarını herhangi ve int aralığında görünebilir:

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; 
    } 
} 
İlgili konular