public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { var j = JObject.Load(reader); if (j == null || !j.HasValues) { return(null); } IRangeFilter filter = new RangeFilterDescriptor <object>(); foreach (var jv in j) { switch (jv.Key) { case "_cache": filter.Cache = jv.Value.Value <bool>(); break; case "_cache_key": filter.CacheKey = jv.Value.Value <string>(); break; case "_name": filter.FilterName = jv.Value.Value <string>(); break; default: filter.Field = jv.Key; var gte = jv.Value["gte"]; if (gte != null) { filter.GreaterThanOrEqualTo = ToString(gte); } var gt = jv.Value["gt"]; if (gt != null) { filter.GreaterThanOrEqualTo = ToString(gt); } var lte = jv.Value["lte"]; if (lte != null) { filter.LowerThanOrEqualTo = ToString(lte); } var lt = jv.Value["lt"]; if (lt != null) { filter.LowerThanOrEqualTo = ToString(lt); } break; } } return(filter); }
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { var j = JObject.Load(reader); if (j == null || !j.HasValues) return null; IRangeFilter filter = new RangeFilterDescriptor<object>(); foreach (var jv in j) { switch (jv.Key) { case "execution": var execution = jv.Value.Value<string>(); if(!string.IsNullOrEmpty(execution)) filter.Execution = execution.ToEnum<RangeExecution>(); break; case "_cache": filter.Cache = jv.Value.Value<bool>(); break; case "_cache_key": filter.CacheKey = jv.Value.Value<string>(); break; case "_name": filter.FilterName = jv.Value.Value<string>(); break; default: filter.Field = jv.Key; var gte = jv.Value["gte"]; if (gte != null) filter.GreaterThanOrEqualTo = ToString(gte); var gt = jv.Value["gt"]; if (gt != null) filter.GreaterThanOrEqualTo = ToString(gt); var lte = jv.Value["lte"]; if (lte != null) filter.LowerThanOrEqualTo = ToString(lte); var lt = jv.Value["lt"]; if (lt != null) filter.LowerThanOrEqualTo = ToString(lt); break; } } return filter; }