public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { writer.WriteStartObject(); IPageResponse message = value as IPageResponse; if (message != null) { writer.WritePropertyName("sEcho"); writer.WriteValue(message.Draw); writer.WritePropertyName("iTotalRecords"); writer.WriteValue(message.TotalRecords); writer.WritePropertyName("iTotalDisplayRecords"); writer.WriteValue(message.TotalFilteredRecords); writer.WritePropertyName("aaData"); serializer.Serialize(writer, message.Data); } JsonConvertHelper.WriteJson(message, writer, serializer, prop => JsonConvertHelper.GetPropertiesFromType(typeof(IPageResponse)).Select(x => x.Name).Contains(prop.Name) || JsonConvertHelper.GetPropertiesFromType(typeof(IPageResponse <>)).Select(x => x.Name).Contains(prop.Name)); writer.WriteEndObject(); }
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { writer.WriteStartObject(); IPageResponse message = value as IPageResponse; if (message != null) { writer.WritePropertyName("draw"); writer.WriteValue(message.Draw); writer.WritePropertyName("recordsTotal"); writer.WriteValue(message.TotalRecords); writer.WritePropertyName("recordsFiltered"); writer.WriteValue(message.TotalFilteredRecords); writer.WritePropertyName("data"); serializer.Serialize(writer, message.Data); if (!string.IsNullOrWhiteSpace(message.Error)) { writer.WritePropertyName("error"); writer.WriteValue(message.Error); } } JsonConvertHelper.WriteJson(message, writer, serializer, prop => JsonConvertHelper.GetPropertiesFromType(typeof(IPageResponse)).Select(x => x.Name).Contains(prop.Name) || JsonConvertHelper.GetPropertiesFromType(typeof(IPageResponse <>)).Select(x => x.Name).Contains(prop.Name)); writer.WriteEndObject(); }
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { JObject jsonObject = JObject.Load(reader); IEnumerable <JProperty> properties = jsonObject.Properties(); Dictionary <string, JProperty> otherProperties = new Dictionary <string, JProperty>(); IFilterRequest message = Activator.CreateInstance(objectType) as IFilterRequest; foreach (JProperty property in properties) { if (property.Name == "draw") { message.Draw = property.Value.ToObject <int>(); } else if (property.Name == "start") { message.Start = property.Value.ToObject <int>(); } else if (property.Name == "length") { message.Length = property.Value.ToObject <int>(); } else if (property.Name == "search[value]") { message.Search.Value = property.Value.ToObject <string>(); } else if (property.Name == "search[regex]") { message.Search.IsRegex = property.Value.ToObject <bool>(); } else if (property.Name.StartsWith("order")) { ReadSortConfiguration(ref message, property); } else if (property.Name.StartsWith("columns")) { ReadColumnConfiguration(ref message, property); } else { otherProperties.Add(property.Name, property); } } JsonConvertHelper.ReadJson(message, otherProperties, serializer, prop => JsonConvertHelper.GetPropertiesFromType(typeof(IFilterRequest)).Select(x => x.Name).Contains(prop.Name)); return(message); }
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { JObject jsonObject = JObject.Load(reader); IEnumerable <JProperty> properties = jsonObject.Properties(); Dictionary <string, JProperty> otherProperties = new Dictionary <string, JProperty>(); IPageResponse message = Activator.CreateInstance(objectType) as IPageResponse; foreach (JProperty property in properties) { if (property.Name == "draw") { message.Draw = property.Value.ToObject <int>(); } else if (property.Name == "recordsTotal") { message.TotalRecords = property.Value.ToObject <int>(); } else if (property.Name == "recordsFiltered") { message.TotalFilteredRecords = property.Value.ToObject <int>(); } else if (property.Name == "data") { if (objectType.IsGenericType) { Type genericType = objectType.GetGenericArguments()[0].MakeArrayType(); object genericArray = property.Value.ToObject(genericType); message.Data = (object[])genericArray; } else { message.Data = property.Value.ToObject <object[]>(); } } else if (property.Name == "error") { message.Error = property.Value.ToObject <string>(); } else { otherProperties.Add(property.Name, property); } } JsonConvertHelper.ReadJson(message, otherProperties, serializer, prop => JsonConvertHelper.GetPropertiesFromType(typeof(IPageResponse)).Select(x => x.Name).Contains(prop.Name) || JsonConvertHelper.GetPropertiesFromType(typeof(IPageResponse <>)).Select(x => x.Name).Contains(prop.Name)); return(message); }
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { writer.WriteStartObject(); IFilterRequest message = value as IFilterRequest; if (message != null) { writer.WritePropertyName("draw"); writer.WriteValue(message.Draw); writer.WritePropertyName("start"); writer.WriteValue(message.Start); writer.WritePropertyName("length"); writer.WriteValue(message.Length); if (!string.IsNullOrWhiteSpace(message.Search.Value)) { writer.WritePropertyName("search[value]"); writer.WriteValue(message.Search.Value); writer.WritePropertyName("search[regex]"); writer.WriteValue(message.Search.IsRegex); } for (int i = 0; i < message.Sort.Count; i++) { writer.WritePropertyName(string.Format("order[{0}][column]", i)); writer.WriteValue(message.Sort[i].Column); writer.WritePropertyName(string.Format("order[{0}][dir]", i)); writer.WriteValue(message.Sort[i].Direction.AsString()); } foreach (KeyValuePair <int, IColumn> column in message.Columns.OrderBy(x => x.Key)) { writer.WritePropertyName(string.Format("columns[{0}][data]", column.Key)); writer.WriteValue(column.Value.Data); writer.WritePropertyName(string.Format("columns[{0}][name]", column.Key)); writer.WriteValue(column.Value.Name); writer.WritePropertyName(string.Format("columns[{0}][searchable]", column.Key)); writer.WriteValue(column.Value.Searchable); writer.WritePropertyName(string.Format("columns[{0}][orderable]", column.Key)); writer.WriteValue(column.Value.Sortable); if (!string.IsNullOrWhiteSpace(column.Value.Search.Value)) { writer.WritePropertyName(string.Format("columns[{0}][search][value]", column.Key)); writer.WriteValue(column.Value.Search.Value); writer.WritePropertyName(string.Format("columns[{0}][search][regex]", column.Key)); writer.WriteValue(column.Value.Search.IsRegex); } } } JsonConvertHelper.WriteJson(message, writer, serializer, prop => JsonConvertHelper.GetPropertiesFromType(typeof(IFilterRequest)).Select(x => x.Name).Contains(prop.Name)); writer.WriteEndObject(); }
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { JObject jsonObject = JObject.Load(reader); IEnumerable <JProperty> properties = jsonObject.Properties(); Dictionary <string, JProperty> otherProperties = new Dictionary <string, JProperty>(); IFilterRequest message = Activator.CreateInstance(objectType) as IFilterRequest; foreach (JProperty property in properties) { if (property.Name == "sEcho") { message.Draw = property.Value.ToObject <int>(); } else if (property.Name == "iDisplayStart") { message.Start = property.Value.ToObject <int>(); } else if (property.Name == "iDisplayLength") { message.Length = property.Value.ToObject <int>(); } else if (property.Name == "sSearch") { message.Search.Value = property.Value.ToObject <string>(); } else if (property.Name == "bEscapeRegex") { message.Search.IsRegex = property.Value.ToObject <bool>(); } else if (property.Name == "iSortingCols") { message.Sort.Capacity = property.Value.ToObject <int>(); } else if (property.Name == "iColumns") { continue; } else if (property.Name.StartsWith("iSortCol") || property.Name.StartsWith("sSortDir")) { ReadSortConfiguration(ref message, property); } else if (property.Name.StartsWith("mDataProp") || property.Name.StartsWith("bSearchable") || property.Name.StartsWith("bSortable") || property.Name.StartsWith("sSearch") || property.Name.StartsWith("bRegex")) { ReadColumnConfiguration(ref message, property); } else { otherProperties.Add(property.Name, property); } } JsonConvertHelper.ReadJson(message, otherProperties, serializer, prop => JsonConvertHelper.GetPropertiesFromType(typeof(IFilterRequest)).Select(x => x.Name).Contains(prop.Name)); return(message); }
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { writer.WriteStartObject(); IFilterRequest message = value as IFilterRequest; if (message != null) { writer.WritePropertyName("sEcho"); writer.WriteValue(message.Draw); writer.WritePropertyName("iDisplayStart"); writer.WriteValue(message.Start); writer.WritePropertyName("iDisplayLength"); writer.WriteValue(message.Length); if (!string.IsNullOrWhiteSpace(message.Search.Value)) { writer.WritePropertyName("sSearch"); writer.WriteValue(message.Search.Value); writer.WritePropertyName("bEscapeRegex"); writer.WriteValue(message.Search.IsRegex); } writer.WritePropertyName("iColumns"); writer.WriteValue(message.Columns.Count); writer.WritePropertyName("iSortingCols"); writer.WriteValue(message.Sort.Count); for (int i = 0; i < message.Sort.Count; i++) { writer.WritePropertyName("iSortCol_" + i); writer.WriteValue(message.Sort[i].Column); writer.WritePropertyName("sSortDir_" + i); writer.WriteValue(message.Sort[i].Direction.AsString()); } foreach (KeyValuePair <int, IColumn> column in message.Columns.OrderBy(x => x.Key)) { writer.WritePropertyName("mDataProp_" + column.Key); writer.WriteValue(column.Value.Data); writer.WritePropertyName("bSearchable_" + column.Key); writer.WriteValue(column.Value.Searchable); writer.WritePropertyName("bSortable_" + column.Key); writer.WriteValue(column.Value.Sortable); if (!string.IsNullOrWhiteSpace(column.Value.Search.Value)) { writer.WritePropertyName("sSearch_" + column.Key); writer.WriteValue(column.Value.Search.Value); writer.WritePropertyName("bRegex_" + column.Key); writer.WriteValue(column.Value.Search.IsRegex); } } } JsonConvertHelper.WriteJson(message, writer, serializer, prop => JsonConvertHelper.GetPropertiesFromType(typeof(IFilterRequest)).Select(x => x.Name).Contains(prop.Name)); writer.WriteEndObject(); }