@@ -37,36 +37,30 @@ public override object ReadJson(JsonReader reader, Type objectType, object exist
37
37
38
38
private static IRangeQuery GetRangeQuery ( JsonSerializer serializer , JObject jo )
39
39
{
40
- var nameIsValid = ! jo . Properties ( ) . Any ( p => p . Name == "format" || p . Name == "time_zone" ) ;
40
+ IRangeQuery fq = FromJson . ReadAs < DateRangeQuery > ( jo . CreateReader ( ) , serializer ) ;
41
+ var isNumeric = false ;
42
+ var isLong = false ;
41
43
42
- var isLong = nameIsValid && CheckType ( jo , JTokenType . Integer ) ;
43
- var isNumeric = nameIsValid && CheckType ( jo , JTokenType . Float ) ;
44
-
45
- IRangeQuery fq ;
46
-
47
- if ( isNumeric )
44
+ foreach ( var property in jo . Properties ( ) )
48
45
{
49
- fq = FromJson . ReadAs < NumericRangeQuery > ( jo . CreateReader ( ) , serializer ) ;
50
- }
51
- else if ( isLong )
52
- {
53
- fq = FromJson . ReadAs < LongRangeQuery > ( jo . CreateReader ( ) , serializer ) ;
54
- }
55
- else
56
- {
57
- fq = FromJson . ReadAs < DateRangeQuery > ( jo . CreateReader ( ) , serializer ) ;
46
+ if ( property . Name == "format" || property . Name == "time_zone" )
47
+ return fq ;
48
+ if ( _rangeKeys . Contains ( property . Name ) )
49
+ {
50
+ if ( property . Value . Type == JTokenType . Float )
51
+ isNumeric = true ;
52
+ else if ( property . Value . Type == JTokenType . Integer )
53
+ isLong = true ;
54
+ }
58
55
}
56
+ if ( isNumeric )
57
+ return FromJson . ReadAs < NumericRangeQuery > ( jo . CreateReader ( ) , serializer ) ;
58
+ if ( isLong )
59
+ return FromJson . ReadAs < LongRangeQuery > ( jo . CreateReader ( ) , serializer ) ;
59
60
60
61
return fq ;
61
62
}
62
63
63
- private static bool CheckType ( JObject jo , JTokenType jTokenType )
64
- {
65
- return jo . Properties ( ) . Any ( p =>
66
- _rangeKeys . Contains ( p . Name ) &&
67
- p . Value . Type == jTokenType ) ;
68
- }
69
-
70
64
private static TReturn GetPropValue < TReturn > ( JObject jObject , string field )
71
65
{
72
66
JToken jToken = null ;
0 commit comments