@@ -34,21 +34,22 @@ private IAggregate ReadAggregate(JsonReader reader, JsonSerializer serializer)
3434
3535 IAggregate aggregate = null ;
3636
37- var property = reader . Value as string ;
38- if ( _numeric . IsMatch ( property ) )
37+ var propertyName = ( string ) reader . Value ;
38+ if ( _numeric . IsMatch ( propertyName ) )
3939 aggregate = GetPercentilesAggregate ( reader , serializer , oldFormat : true ) ;
4040
41- var meta = ( property == "meta" ) ? GetMetadata ( reader ) : null ;
41+ var meta = propertyName == "meta"
42+ ? GetMetadata ( reader )
43+ : null ;
4244
4345 if ( aggregate != null )
4446 {
4547 aggregate . Meta = meta ;
4648 return aggregate ;
4749 }
4850
49- property = reader . Value as string ;
50-
51- switch ( property )
51+ propertyName = ( string ) reader . Value ;
52+ switch ( propertyName )
5253 {
5354 case "values" :
5455 reader . Read ( ) ;
@@ -96,10 +97,8 @@ private IBucket ReadBucket(JsonReader reader, JsonSerializer serializer)
9697 if ( reader . TokenType != JsonToken . PropertyName )
9798 return null ;
9899
99- IBucket item = null ;
100-
101- var property = reader . Value as string ;
102-
100+ IBucket item ;
101+ var property = ( string ) reader . Value ;
103102 switch ( property )
104103 {
105104 case "key" :
@@ -128,7 +127,7 @@ private Dictionary<string, object> GetMetadata(JsonReader reader)
128127 reader . Read ( ) ;
129128 while ( reader . TokenType != JsonToken . EndObject )
130129 {
131- var key = reader . Value as string ;
130+ var key = ( string ) reader . Value ;
132131 reader . Read ( ) ;
133132 var value = reader . Value ;
134133 meta . Add ( key , value ) ;
@@ -156,7 +155,7 @@ private IAggregate GetTopHitsAggregate(JsonReader reader, JsonSerializer seriali
156155
157156 var total = o [ "total" ] . ToObject < long > ( ) ;
158157 var maxScore = o [ "max_score" ] . ToObject < double ? > ( ) ;
159- var hits = o [ "hits" ] . Children ( ) . OfType < JObject > ( ) . Select ( s => s ) ;
158+ var hits = o [ "hits" ] . Children ( ) . OfType < JObject > ( ) ;
160159 reader . Read ( ) ;
161160 return new TopHitsAggregate ( hits , serializer ) { Total = total , MaxScore = maxScore } ;
162161 }
@@ -203,14 +202,16 @@ private IAggregate GetPercentilesAggregate(JsonReader reader, JsonSerializer ser
203202 reader . Read ( ) ;
204203 while ( reader . TokenType != JsonToken . EndObject )
205204 {
206- if ( ( reader . Value as string ) . Contains ( "_as_string" ) )
205+ var propertyName = ( string ) reader . Value ;
206+ if ( propertyName . Contains ( "_as_string" ) )
207207 {
208208 reader . Read ( ) ;
209209 reader . Read ( ) ;
210210 }
211211 if ( reader . TokenType != JsonToken . EndObject )
212212 {
213- var percentile = double . Parse ( reader . Value as string , CultureInfo . InvariantCulture ) ;
213+ var percentileValue = ( string ) reader . Value ;
214+ var percentile = double . Parse ( percentileValue , CultureInfo . InvariantCulture ) ;
214215 reader . Read ( ) ;
215216 var value = reader . Value as double ? ;
216217 percentileItems . Add ( new PercentileItem ( )
@@ -252,13 +253,13 @@ private IAggregate GetStatsAggregate(JsonReader reader, JsonSerializer serialize
252253 reader . Read ( ) ;
253254 var count = ( reader . Value as long ? ) . GetValueOrDefault ( 0 ) ;
254255 reader . Read ( ) ; reader . Read ( ) ;
255- var min = ( reader . Value as double ? ) ;
256+ var min = reader . Value as double ? ;
256257 reader . Read ( ) ; reader . Read ( ) ;
257- var max = ( reader . Value as double ? ) ;
258+ var max = reader . Value as double ? ;
258259 reader . Read ( ) ; reader . Read ( ) ;
259- var average = ( reader . Value as double ? ) ;
260+ var average = reader . Value as double ? ;
260261 reader . Read ( ) ; reader . Read ( ) ;
261- var sum = ( reader . Value as double ? ) ;
262+ var sum = reader . Value as double ? ;
262263
263264 var statsMetric = new StatsAggregate ( )
264265 {
@@ -274,7 +275,8 @@ private IAggregate GetStatsAggregate(JsonReader reader, JsonSerializer serialize
274275 if ( reader . TokenType == JsonToken . EndObject )
275276 return statsMetric ;
276277
277- while ( reader . TokenType != JsonToken . EndObject && ( reader . Value as string ) . Contains ( "_as_string" ) )
278+ var propertyName = ( string ) reader . Value ;
279+ while ( reader . TokenType != JsonToken . EndObject && propertyName . Contains ( "_as_string" ) )
278280 {
279281 reader . Read ( ) ;
280282 reader . Read ( ) ;
@@ -306,18 +308,24 @@ private IAggregate GetExtendedStatsAggregate(StatsAggregate statsMetric, JsonRea
306308 extendedStatsMetric . StdDeviation = ( reader . Value as double ? ) ;
307309 reader . Read ( ) ;
308310
311+ string propertyName ;
312+
309313 if ( reader . TokenType != JsonToken . EndObject )
310314 {
311315 var bounds = new StandardDeviationBounds ( ) ;
312316 reader . Read ( ) ;
313317 reader . Read ( ) ;
314- if ( ( reader . Value as string ) == "upper" )
318+
319+ propertyName = ( string ) reader . Value ;
320+ if ( propertyName == "upper" )
315321 {
316322 reader . Read ( ) ;
317323 bounds . Upper = reader . Value as double ? ;
318324 }
319325 reader . Read ( ) ;
320- if ( ( reader . Value as string ) == "lower" )
326+
327+ propertyName = ( string ) reader . Value ;
328+ if ( propertyName == "lower" )
321329 {
322330 reader . Read ( ) ;
323331 bounds . Lower = reader . Value as double ? ;
@@ -326,10 +334,12 @@ private IAggregate GetExtendedStatsAggregate(StatsAggregate statsMetric, JsonRea
326334 reader . Read ( ) ;
327335 reader . Read ( ) ;
328336 }
329- while ( reader . TokenType != JsonToken . EndObject && ( reader . Value as string ) . Contains ( "_as_string" ) )
337+
338+ propertyName = ( string ) reader . Value ;
339+ while ( reader . TokenType != JsonToken . EndObject && propertyName . Contains ( "_as_string" ) )
330340 {
331341 // std_deviation_bounds is an object, so we need to skip its properties
332- if ( ( reader . Value as string ) . Equals ( "std_deviation_bounds_as_string" ) )
342+ if ( propertyName . Equals ( "std_deviation_bounds_as_string" ) )
333343 {
334344 reader . Read ( ) ;
335345 reader . Read ( ) ;
@@ -351,7 +361,7 @@ private IReadOnlyDictionary<string, IAggregate> GetSubAggregates(JsonReader read
351361 var currentDepth = reader . Depth ;
352362 do
353363 {
354- var fieldName = reader . Value as string ;
364+ var fieldName = ( string ) reader . Value ;
355365 reader . Read ( ) ;
356366 var agg = this . ReadAggregate ( reader , serializer ) ;
357367 nestedAggs . Add ( fieldName , agg ) ;
@@ -365,15 +375,15 @@ private IReadOnlyDictionary<string, IAggregate> GetSubAggregates(JsonReader read
365375 private IAggregate GetMultiBucketAggregate ( JsonReader reader , JsonSerializer serializer )
366376 {
367377 var bucket = new BucketAggregate ( ) ;
368- var property = reader . Value as string ;
369- if ( property == "doc_count_error_upper_bound" )
378+ var propertyName = ( string ) reader . Value ;
379+ if ( propertyName == "doc_count_error_upper_bound" )
370380 {
371381 reader . Read ( ) ;
372382 bucket . DocCountErrorUpperBound = reader . Value as long ? ;
373383 reader . Read ( ) ;
374384 }
375- property = reader . Value as string ;
376- if ( property == "sum_other_doc_count" )
385+ propertyName = ( string ) reader . Value ;
386+ if ( propertyName == "sum_other_doc_count" )
377387 {
378388 reader . Read ( ) ;
379389 bucket . SumOtherDocCount = reader . Value as long ? ;
@@ -422,9 +432,9 @@ private IAggregate GetMultiBucketAggregate(JsonReader reader, JsonSerializer ser
422432 private IAggregate GetValueAggregate ( JsonReader reader , JsonSerializer serializer )
423433 {
424434 reader . Read ( ) ;
425- var valueMetric = new ValueAggregate ( )
435+ var valueMetric = new ValueAggregate
426436 {
427- Value = ( reader . Value as double ? )
437+ Value = reader . Value as double ?
428438 } ;
429439 if ( valueMetric . Value == null && reader . ValueType == typeof ( long ) )
430440 valueMetric . Value = reader . Value as long ? ;
@@ -434,23 +444,38 @@ private IAggregate GetValueAggregate(JsonReader reader, JsonSerializer serialize
434444 reader . Read ( ) ;
435445 if ( reader . TokenType != JsonToken . EndObject )
436446 {
437- if ( reader . TokenType == JsonToken . PropertyName && ( reader . Value as string ) == "keys" )
447+ if ( reader . TokenType == JsonToken . PropertyName )
438448 {
439- var keyedValueMetric = new KeyedValueAggregate
440- {
441- Value = valueMetric . Value
442- } ;
443- var keys = new List < string > ( ) ;
444- reader . Read ( ) ;
445- reader . Read ( ) ;
446- while ( reader . TokenType != JsonToken . EndArray )
449+ var propertyName = ( string ) reader . Value ;
450+
451+ if ( propertyName == "value_as_string" )
447452 {
448- keys . Add ( reader . Value . ToString ( ) ) ;
453+ valueMetric . ValueAsString = reader . ReadAsString ( ) ;
449454 reader . Read ( ) ;
450455 }
451- reader . Read ( ) ;
452- keyedValueMetric . Keys = keys ;
453- return keyedValueMetric ;
456+
457+ if ( reader . TokenType == JsonToken . PropertyName )
458+ {
459+ propertyName = ( string ) reader . Value ;
460+ if ( propertyName == "keys" )
461+ {
462+ var keyedValueMetric = new KeyedValueAggregate
463+ {
464+ Value = valueMetric . Value
465+ } ;
466+ var keys = new List < string > ( ) ;
467+ reader . Read ( ) ;
468+ reader . Read ( ) ;
469+ while ( reader . TokenType != JsonToken . EndArray )
470+ {
471+ keys . Add ( reader . Value . ToString ( ) ) ;
472+ reader . Read ( ) ;
473+ }
474+ reader . Read ( ) ;
475+ keyedValueMetric . Keys = keys ;
476+ return keyedValueMetric ;
477+ }
478+ }
454479 }
455480 else
456481 {
@@ -533,14 +558,22 @@ public IBucket GetRangeBucket(JsonReader reader, JsonSerializer serializer, stri
533558 private IBucket GetDateHistogramBucket ( JsonReader reader , JsonSerializer serializer )
534559 {
535560 var keyAsString = reader . ReadAsString ( ) ;
536- reader . Read ( ) ; reader . Read ( ) ;
561+ reader . Read ( ) ;
562+ reader . Read ( ) ;
537563 var key = ( reader . Value as long ? ) . GetValueOrDefault ( 0 ) ;
538- reader . Read ( ) ; reader . Read ( ) ;
564+ reader . Read ( ) ;
565+ reader . Read ( ) ;
539566 var docCount = ( reader . Value as long ? ) . GetValueOrDefault ( 0 ) ;
540567 reader . Read ( ) ;
541568
542- var dateHistogram = new DateHistogramBucket ( ) { Key = key , KeyAsString = keyAsString , DocCount = docCount } ;
543- dateHistogram . Aggregations = this . GetSubAggregates ( reader , serializer ) ;
569+ var dateHistogram = new DateHistogramBucket
570+ {
571+ Key = key ,
572+ KeyAsString = keyAsString ,
573+ DocCount = docCount ,
574+ Aggregations = this . GetSubAggregates ( reader , serializer )
575+ } ;
576+
544577 return dateHistogram ;
545578
546579 }
@@ -550,13 +583,13 @@ private IBucket GetKeyedBucket(JsonReader reader, JsonSerializer serializer)
550583 reader . Read ( ) ;
551584 var key = reader . Value ;
552585 reader . Read ( ) ;
553- var property = reader . Value as string ;
554- if ( property == "from" || property == "to" )
586+ var propertyName = ( string ) reader . Value ;
587+ if ( propertyName == "from" || propertyName == "to" )
555588 return GetRangeBucket ( reader , serializer , key as string ) ;
556589
557590 var bucket = new KeyedBucket < object > { Key = key } ;
558591
559- if ( property == "key_as_string" )
592+ if ( propertyName == "key_as_string" )
560593 {
561594 bucket . KeyAsString = reader . ReadAsString ( ) ;
562595 reader . Read ( ) ;
@@ -567,7 +600,7 @@ private IBucket GetKeyedBucket(JsonReader reader, JsonSerializer serializer)
567600 bucket . DocCount = docCount . GetValueOrDefault ( 0 ) ;
568601 reader . Read ( ) ;
569602
570- var nextProperty = reader . Value as string ;
603+ var nextProperty = ( string ) reader . Value ;
571604 if ( nextProperty == "score" )
572605 return GetSignificantTermsBucket ( reader , serializer , bucket ) ;
573606
0 commit comments