コード例 #1
0
        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();
        }
コード例 #2
0
        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();
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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();
        }
コード例 #6
0
        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);
        }
コード例 #7
0
        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();
        }