@@ -311,18 +311,26 @@ private IAggregate GetStatsAggregate(JsonReader reader, JsonSerializer serialize
311311 if ( reader . TokenType == JsonToken . EndObject ) return new GeoCentroidAggregate { Count = count } ;
312312
313313 reader . Read ( ) ;
314- var min = reader . Value as double ? ;
314+ var min = reader . TokenType == JsonToken . Integer
315+ ? reader . Value as long ?
316+ : reader . Value as double ? ;
315317 reader . Read ( ) ;
316318 reader . Read ( ) ;
317- var max = reader . Value as double ? ;
319+ var max = reader . TokenType == JsonToken . Integer
320+ ? reader . Value as long ?
321+ : reader . Value as double ? ;
318322 reader . Read ( ) ;
319323 reader . Read ( ) ;
320- var average = reader . Value as double ? ;
324+ var average = reader . TokenType == JsonToken . Integer
325+ ? reader . Value as long ?
326+ : reader . Value as double ? ;
321327 reader . Read ( ) ;
322328 reader . Read ( ) ;
323- var sum = reader . Value as double ? ;
329+ var sum = reader . TokenType == JsonToken . Integer
330+ ? reader . Value as long ?
331+ : reader . Value as double ? ;
324332
325- var statsMetric = new StatsAggregate ( )
333+ var statsMetric = new StatsAggregate
326334 {
327335 Average = average ,
328336 Count = count ,
@@ -336,8 +344,7 @@ private IAggregate GetStatsAggregate(JsonReader reader, JsonSerializer serialize
336344 if ( reader . TokenType == JsonToken . EndObject )
337345 return statsMetric ;
338346
339- var propertyName = ( string ) reader . Value ;
340- while ( reader . TokenType != JsonToken . EndObject && propertyName . Contains ( Parser . AsStringSuffix ) )
347+ while ( reader . TokenType != JsonToken . EndObject && ( ( string ) reader . Value ) . EndsWith ( Parser . AsStringSuffix ) )
341348 {
342349 reader . Read ( ) ;
343350 reader . Read ( ) ;
@@ -351,7 +358,7 @@ private IAggregate GetStatsAggregate(JsonReader reader, JsonSerializer serialize
351358
352359 private IAggregate GetExtendedStatsAggregate ( StatsAggregate statsMetric , JsonReader reader )
353360 {
354- var extendedStatsMetric = new ExtendedStatsAggregate ( )
361+ var extendedStatsMetric = new ExtendedStatsAggregate
355362 {
356363 Average = statsMetric . Average ,
357364 Count = statsMetric . Count ,
@@ -361,24 +368,28 @@ private IAggregate GetExtendedStatsAggregate(StatsAggregate statsMetric, JsonRea
361368 } ;
362369
363370 reader . Read ( ) ;
364- extendedStatsMetric . SumOfSquares = reader . Value as double ? ;
371+ extendedStatsMetric . SumOfSquares = reader . TokenType == JsonToken . Integer
372+ ? reader . Value as long ?
373+ : reader . Value as double ? ;
365374 reader . Read ( ) ;
366375 reader . Read ( ) ;
367- extendedStatsMetric . Variance = reader . Value as double ? ;
376+ extendedStatsMetric . Variance = reader . TokenType == JsonToken . Integer
377+ ? reader . Value as long ?
378+ : reader . Value as double ? ;
368379 reader . Read ( ) ;
369380 reader . Read ( ) ;
370- extendedStatsMetric . StdDeviation = reader . Value as double ? ;
381+ extendedStatsMetric . StdDeviation = reader . TokenType == JsonToken . Integer
382+ ? reader . Value as long ?
383+ : reader . Value as double ? ;
371384 reader . Read ( ) ;
372385
373- string propertyName ;
374-
375386 if ( reader . TokenType != JsonToken . EndObject )
376387 {
377388 var bounds = new StandardDeviationBounds ( ) ;
378389 reader . Read ( ) ;
379390 reader . Read ( ) ;
380391
381- propertyName = ( string ) reader . Value ;
392+ var propertyName = ( string ) reader . Value ;
382393 if ( propertyName == Parser . Upper )
383394 {
384395 reader . Read ( ) ;
@@ -397,11 +408,10 @@ private IAggregate GetExtendedStatsAggregate(StatsAggregate statsMetric, JsonRea
397408 reader . Read ( ) ;
398409 }
399410
400- propertyName = ( string ) reader . Value ;
401- while ( reader . TokenType != JsonToken . EndObject && propertyName . Contains ( Parser . AsStringSuffix ) )
411+ while ( reader . TokenType != JsonToken . EndObject && ( ( string ) reader . Value ) . EndsWith ( Parser . AsStringSuffix ) )
402412 {
403413 // std_deviation_bounds is an object, so we need to skip its properties
404- if ( propertyName . Equals ( Parser . StdDeviationBoundsAsString ) )
414+ if ( ( ( string ) reader . Value ) . Equals ( Parser . StdDeviationBoundsAsString ) )
405415 {
406416 reader . Read ( ) ;
407417 reader . Read ( ) ;
0 commit comments