예제 #1
0
        public static void Register(HttpConfiguration config)
        {
            // Web API configuration and services
            GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
            GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.NullValueHandling     = NullValueHandling.Ignore;
            GlobalConfiguration.Configuration.Formatters.Remove(GlobalConfiguration.Configuration.Formatters.XmlFormatter);

            var jsonFormatter = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
            var enumConverter = new Newtonsoft.Json.Converters.StringEnumConverter();

            jsonFormatter.SerializerSettings.Converters.Add(enumConverter);
            var settings = jsonFormatter.SerializerSettings;

            settings.Formatting       = Formatting.Indented;
            settings.ContractResolver = new CamelCasePropertyNamesContractResolver();

            var cors = new EnableCorsAttribute("*", "*", "*");

            config.EnableCors(cors);

            // Web API routes
            config.MapHttpAttributeRoutes();

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
                );
        }
예제 #2
0
 static Extensions()
 {
     // Force Enums to be converted as strings
     _converter  = new Newtonsoft.Json.Converters.StringEnumConverter();
     _serializer = new JsonSerializer();
     _serializer.Converters.Add(_converter);
 }
예제 #3
0
        public void Initialize(InitializationEngine context)
        {
            // Enable Web API routing
            GlobalConfiguration.Configure(config =>
            {
                // Attribute routing
                config.MapHttpAttributeRoutes();

                var formatters    = GlobalConfiguration.Configuration.Formatters;
                var jsonFormatter = formatters.JsonFormatter;
                var settings      = jsonFormatter.SerializerSettings;

                var enumConverter = new Newtonsoft.Json.Converters.StringEnumConverter();
                jsonFormatter.SerializerSettings.Converters.Add(enumConverter);

                settings.Formatting = Formatting.Indented;

                config.Formatters.Remove(config.Formatters.XmlFormatter);

                // config.MapHttpAttributeRoutes();

                config.Routes.MapHttpRoute(
                    name: "DefaultEpiApi",
                    routeTemplate: ApiRoute + "/{controller}/{id}",
                    defaults: new { id = RouteParameter.Optional });
            });
        }
예제 #4
0
 static JsonSerializerTest()
 {
     systemTextJsonOptions = new System.Text.Json.JsonSerializerOptions();
     systemTextJsonOptions.Converters.Add(new System.Text.Json.Serialization.JsonStringEnumConverter());
     newtonsoftConverter = new Newtonsoft.Json.Converters.StringEnumConverter();
     obj          = GetTestObject();
     json         = JsonSerializer.Serialize(obj);
     jsonnameless = JsonSerializer.SerializeNameless(obj);
 }
예제 #5
0
 public override void WriteJson(Newtonsoft.Json.JsonWriter writer, object value, Newtonsoft.Json.JsonSerializer serializer)
 {
     if (value is Enum)
     {
         var ConvEnumToString = new Newtonsoft.Json.Converters.StringEnumConverter();
         ConvEnumToString.WriteJson(writer, value, serializer);
         ConvEnumToString = null;
         return;
     }
     //else
     serializer.Serialize(writer, value);
 } // End Sub WriteJson
예제 #6
0
        public static string Searilize(string format, Type type, object value, Type extendType)
        {
            string str = "";

            if (format == "xml")
            {
                StringWriter            sw = new StringWriter();
                XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
                //ns.Add("", "");

                System.IO.Stream stream = new System.IO.MemoryStream();

                System.Xml.Serialization.XmlSerializer serializer = null;
                if (extendType == null)
                {
                    serializer = new System.Xml.Serialization.XmlSerializer(type);
                }
                else
                {
                    serializer = new System.Xml.Serialization.XmlSerializer(type, new Type[] { extendType });
                }
                serializer.Serialize(stream, value, ns);

                stream.Seek(0, System.IO.SeekOrigin.Begin);
                System.IO.StreamReader reader = new System.IO.StreamReader(stream, Encoding.UTF8);

                str = reader.ReadToEnd();
            }
            else
            {
                var enumConverter = new Newtonsoft.Json.Converters.StringEnumConverter();
                var settings      = new JsonSerializerSettings()
                {
                    NullValueHandling = NullValueHandling.Ignore
                };
                settings.Converters.Add(enumConverter);
                str = JsonConvert.SerializeObject(value, settings);
            }

            return(str);
        }
예제 #7
0
        public static void Register(HttpConfiguration config)
        {
            // Web API configuration and services

            // Web API routes
            config.EnableCors();
            config.MapHttpAttributeRoutes();

               // GlobalConfiguration.Configuration.Routes.MapHttpRoute(
               //  name: "DefaultApi",
               //  routeTemplate: "api/{controller}/{id}",
               //  defaults: new { id = System.Web.Http.RouteParameter.Optional }
               //);
            config.Formatters.Remove(config.Formatters.XmlFormatter);
            config.EnableSystemDiagnosticsTracing();
            var jsonFormatter = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
            var enumConverter = new Newtonsoft.Json.Converters.StringEnumConverter();
            jsonFormatter.SerializerSettings = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore };
            jsonFormatter.SerializerSettings.Converters.Add(enumConverter);
            jsonFormatter.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
        }
예제 #8
0
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            GlobalConfiguration.Configure(WebApiConfig.Register);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);

            GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
            GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.NullValueHandling     = NullValueHandling.Ignore;
            GlobalConfiguration.Configuration.Formatters.Remove(GlobalConfiguration.Configuration.Formatters.XmlFormatter);

            var jsonFormatter = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
            var enumConverter = new Newtonsoft.Json.Converters.StringEnumConverter();

            jsonFormatter.SerializerSettings.Converters.Add(enumConverter);
            var settings = jsonFormatter.SerializerSettings;

            settings.Formatting       = Formatting.Indented;
            settings.ContractResolver = new CamelCasePropertyNamesContractResolver();
        }
예제 #9
0
        public static BSMATMaterialFile Import(string text)
        {
            var conv  = new Newtonsoft.Json.Converters.StringEnumConverter();
            var bsmat = JsonConvert.DeserializeObject <BSMATMaterialFile>(text, conv);

            foreach (var stage in bsmat.ShaderStages)
            {
                List <UniformParam> uniformList = new List <UniformParam>();
                foreach (var uniform in stage.UniformData)
                {
                    var uniformParam = new UniformParam();
                    uniformList.Add(uniformParam);

                    uniformParam.Name = uniform.Key;

                    //Basic type define via the start of uniform name.
                    //All params have starting characters (f float, i int, v vec, etc)
                    uniformParam.DataType = ParamType.Float;
                    if (uniform.Key.StartsWith("i"))
                    {
                        uniformParam.DataType = ParamType.Int;
                    }

                    //Turn the data into normal array objects
                    if (uniformParam.DataType == ParamType.Float)
                    {
                        uniformParam.Data = ((Newtonsoft.Json.Linq.JArray)uniform.Value).ToObject <float[]>();
                    }
                    if (uniformParam.DataType == ParamType.Int)
                    {
                        uniformParam.Data = ((Newtonsoft.Json.Linq.JArray)uniform.Value).ToObject <int[]>();
                    }
                }
                stage.Uniforms = uniformList.ToArray();
            }
            return(bsmat);
        }
        public void Initialize(InitializationEngine context)
        {
            GlobalConfiguration.Configure(config =>
            {
                var cors = new EnableCorsAttribute("*", "*", "*");
                config.EnableCors(cors);

                var formatters    = GlobalConfiguration.Configuration.Formatters;
                var jsonFormatter = formatters.JsonFormatter;
                var settings      = jsonFormatter.SerializerSettings;

                var enumConverter = new Newtonsoft.Json.Converters.StringEnumConverter();
                jsonFormatter.SerializerSettings.Converters.Add(enumConverter);

                settings.Formatting = Formatting.Indented;

                config.Formatters.Remove(config.Formatters.XmlFormatter);

                config.Routes.MapHttpRoute(
                    name: "DefaultEpiApi",
                    routeTemplate: "api/epi/{controller}/{id}",
                    defaults: new { id = RouteParameter.Optional });
            });
        }
예제 #11
0
        public void TryEnumLookup()
        {
            var enumTypes = new[]
            {
                typeof(Skippy),
                typeof(Sparse),
                typeof(Negatives),
                typeof(DayOfWeek),
                typeof(FakeStatusCodes),
                typeof(Empty),
                typeof(FunWithFlags0),
                typeof(FunWithFlags1),
                typeof(FunWithFlags2),
                typeof(FunWithFlags3),
                typeof(FunWithFlags4),
                typeof(FunWithFlags5),
                typeof(FunWithFlags6),
            }
            .Concat(typeof(Util.CorEnums).GetNestedTypes())
            .ToList();

            var buffer            = new byte[256];
            var tiny2             = new byte[2];
            var tiny4             = new byte[4];
            var newtEnumConverter = new Newtonsoft.Json.Converters.StringEnumConverter();
            var values            = Enumerable.Range(0, 256).Select(i => (ulong)i).ToArray();

            foreach (var enumType in enumTypes)
            {
                var lookup = StringEnum.GetCachedLookup(enumType);

                foreach (var value in values)
                {
                    var count = GetStringEnum(lookup, value, buffer, enumType);
                    Assert.True(count > 0, "Positive count expected");

                    if (count > tiny2.Length)
                    {
                        // just make sure it doesn't throw
                        GetStringEnum(lookup, value, tiny2, enumType);
                    }
                    if (count > tiny4.Length)
                    {
                        // just make sure it doesn't throw
                        GetStringEnum(lookup, value, tiny4, enumType);
                    }

                    if (buffer[0] == (byte)'"')
                    {
                        // string
                        Assert.True(count > 2, "Count > 2 expected");
                        var name        = Encoding.UTF8.GetString(buffer, 1, count - 2);
                        var parsedValue = Enum.Parse(enumType, name, ignoreCase: false);
                        Assert.Equal(value, ToUInt64(enumType, parsedValue));
                    }
                    else
                    {
                        var   number      = Encoding.UTF8.GetString(buffer, 0, count);
                        bool  signed      = IsSigned(enumType);
                        ulong parsedValue = signed ?
                                            (ulong)long.Parse(number, CultureInfo.InvariantCulture) :
                                            ulong.Parse(number, CultureInfo.InvariantCulture);
                        Assert.Equal(value, parsedValue);
                    }
                }
            }

            Assert.True(StringEnum.CachedLookups.Length >= enumTypes.Count, "All tested enum types should be cached");
            Assert.Equal(2, StringEnum.PagesAllocated);
        }
예제 #12
0
        public void GetDecision(MessageEventArgs e, SendMessage send)
        {
            JsonConverter[] c = new JsonConverter[1];
            c[0] = new Newtonsoft.Json.Converters.StringEnumConverter();
            string   data = e.Data;
            IMessage m    = Deserialize <IMessage>(data, c);

            switch (m.Type)
            {
            case MessageType.AddBookRequest:
                HandleAddBookRequest(send, Deserialize <AddBookRequest>(data, c));
                break;

            case MessageType.CheckoutRequest:
                HandleCheckoutRequest(send, Deserialize <CheckoutRequest>(data, c));
                break;

            case MessageType.CreateUserRequest:
                HandleCreateUserRequest(send, Deserialize <CreateUserRequest>(data, c));
                break;

            case MessageType.GetBookRequest:
                HandleGetBookRequest(send, Deserialize <GetBookRequest>(data, c));
                break;

            case MessageType.LoginRequest:
                HandleLoginRequest(send, Deserialize <LoginRequest>(data, c));
                break;

            case MessageType.RenewalRequest:
                HandleRenewalRequest(send, Deserialize <RenewalRequest>(data, c));
                break;

            case MessageType.ResetPasswordRequest:
                HandleResetPasswordRequest(send, Deserialize <ResetPasswordRequest>(data, c));
                break;

            case MessageType.RetireBookRequest:
                HandleRetireBookRequest(send, Deserialize <RetireBookRequest>(data, c));
                break;

            case MessageType.ReturnRequest:
                HandleReturnRequest(send, Deserialize <ReturnRequest>(data, c));
                break;

            case MessageType.SearchBookRequest:
                DecideSearchBookRequest(send, Deserialize <SearchBookRequest>(data, c));
                break;

            case MessageType.UpdateBookConditionRequest:
                HandleUpdateBookConditionRequest(send, Deserialize <UpdateBookConditionRequest>(data, c));
                break;

            case MessageType.ViewCheckedoutRequest:
                HandleViewCheckedoutRequest(send, Deserialize <ViewCheckedoutRequest>(data, c));
                break;

            default:
                break;
            }
        }
        private static JsonSerializerSettings GetZendeskSerializer()
        {
            // this method creates a Newtonsoft JSON converter compatible with the .NET to Zendesk naming conventions.

            var stringEnumConverter = new Newtonsoft.Json.Converters.StringEnumConverter() { CamelCaseText = true };
            var jsonSettings = new JsonSerializerSettings() { ContractResolver = new CamelCasePropertyNamesContractResolver() };
            jsonSettings.Converters.Add(stringEnumConverter);

            return jsonSettings;
        }
예제 #14
0
 public override void WriteJson(Newtonsoft.Json.JsonWriter writer, object value, Newtonsoft.Json.JsonSerializer serializer)
 {
     if (value is Enum)
     {
         var ConvEnumToString = new Newtonsoft.Json.Converters.StringEnumConverter();
         ConvEnumToString.WriteJson(writer, value, serializer);
         ConvEnumToString = null;
         return;
     }
     //else
     serializer.Serialize(writer, value);
 }
예제 #15
0
        public string ToJson()
        {
            var conv = new Newtonsoft.Json.Converters.StringEnumConverter();

            return(JsonConvert.SerializeObject(this, Formatting.Indented, conv));
        }