Exemple #1
0
 private static void TestJsonLibraries(string[] testFilePathList)
 {
     using (var fileStream = new FileStream(
                $"TestResults/DeserializationTestResult-{DateTime.Now.ToFileTime()}.csv",
                FileMode.OpenOrCreate))
         using (var writer = new StreamWriter(fileStream, Encoding.UTF8)) {
             const int iteration = 10;
             writer.WriteLine($"Deserialization Test (iteration: {iteration})");
             writer.WriteLine("Unit: ms,FadeJson,Jil,JSON.NET,ServiceStack.Text,SimpleJson,jsonfx");
             foreach (var filePath in testFilePathList)
             {
                 writer.Write(Path.GetFileNameWithoutExtension(filePath));
                 var results = new[] {
                     CodeTimer.Execute($"FadeJson {filePath}", iteration,
                                       () => { Json.FromFile(filePath); }),
                     CodeTimer.Execute($"Jil {filePath}", iteration,
                                       () => { JSON.DeserializeDynamic(new StreamReader(filePath)); }),
                     CodeTimer.Execute($"JSON.NET {filePath}", iteration,
                                       () => { JObject.Load(new JsonTextReader(new StreamReader(filePath))); }),
                     CodeTimer.Execute($"ServiceStack.Text {filePath}", iteration,
                                       () => { DynamicJson.Deserialize(File.ReadAllText(filePath)); }),
                     CodeTimer.Execute($"jsonfx {filePath}", iteration,
                                       () => { new JsonReader().Read(new StreamReader(filePath)); })
                 };
                 foreach (var result in results)
                 {
                     writer.Write($",{result.TimeElapsed}");
                 }
                 writer.WriteLine();
             }
         }
 }
Exemple #2
0
        public void Deserialize_dynamic_json()
        {
            var json = "{\"Id\":\"fb1d17c7298c448cb7b91ab7041e9ff6\",\"Name\":\"John\",\"DateOfBirth\":\"\\/Date(317433600000-0000)\\/\"}";

            var obj = JsonObject.Parse(json);

            obj.Get <Guid>("Id").ToString().Print();
            obj.Get <string>("Name").Print();
            obj.Get <DateTime>("DateOfBirth").ToString("D").Print();

            dynamic dyn  = DynamicJson.Deserialize(json);
            string  id   = dyn.Id;
            string  name = dyn.Name;
            string  dob  = dyn.DateOfBirth;

            "DynamicJson: {0}, {1}, {2}".Print(id, name, dob);

            using (JsConfig.With(new Config {
                ConvertObjectTypesIntoStringDictionary = true
            }))
            {
                "Object Dictionary".Print();
                var map = (Dictionary <string, object>)json.FromJson <object>();
                map.PrintDump();
            }
        }
Exemple #3
0
        /// <summary>
        /// Gets the latest version information.
        /// </summary>
        /// <returns>Returns the LatestVersionInformation</returns>
        public dynamic GetLatestVersion()
        {
            dynamic version = new ExpandoObject();

            try
            {
                ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 |
                                                       SecurityProtocolType.Tls12 | SecurityProtocolType.Ssl3;

                var test = "https://api.github.com/repos/YAFNET/YAFNET/releases/latest".GetJsonFromUrl(
                    x => x.UserAgent = "YAF.NET");

                var json = DynamicJson.Deserialize(test);

                var tagName = (string)json.tag_name;
                var date    = System.DateTime.SpecifyKind(
                    System.DateTime.Parse(json.published_at),
                    DateTimeKind.Unspecified);

                version.UpgradeUrl  = (string)json.assets[2].browser_download_url;
                version.VersionDate = date;
                version.Version     = tagName.Replace("v", string.Empty);
            }
            catch (Exception x)
            {
                this.Get <ILogger>().Error(x, "Exception In LatestInformationService");
            }

            return(version);
        }
        private void CreateScenePhysics(Maps map)
        {
            var physicsWorldProvider = Components.GetComponent <IPhysicsWorldProvider>().AssertNotNull();
            var world = physicsWorldProvider.GetWorld().AssertNotNull();

            var pythonScenesPath = (string)Config.Global.Python.Scenes;
            var path             = $"{pythonScenesPath}/{map}/{DATA_FILE_NAME}";

            if (!File.Exists(path))
            {
                LogUtils.Log($"Could not find ScenePhysicsData json file for {map}.");
                return;
            }

            var json             = File.ReadAllText(path);
            var scenePhysicsData = DynamicJson.Deserialize(json);

            foreach (var groundCollider in scenePhysicsData.GroundColliders)
            {
                world.CreateGround(
                    new Vector2(
                        float.Parse(groundCollider.Position.X, CultureInfo.InvariantCulture.NumberFormat),
                        float.Parse(groundCollider.Position.Y, CultureInfo.InvariantCulture.NumberFormat)),
                    new Vector2(
                        float.Parse(groundCollider.Extents.X, CultureInfo.InvariantCulture.NumberFormat),
                        float.Parse(groundCollider.Extents.Y, CultureInfo.InvariantCulture.NumberFormat))
                    );
            }
        }
Exemple #5
0
        public static bool TryResolve(string log, out LogEntity entity)
        {
            entity = null;
            if (string.IsNullOrEmpty(log))
            {
                return(false);
            }

            //here is a sample data
            //[2018-04-10 20:43:30.419] [Info] {"Action":"Return","Method":"System.String[] LifeVC.Biz.OrderLogic.OrdersBiz::GetRegion(System.Int32)","Result":"$return=System.String[]","Time":25,"TracerId":"718f1d9f02054b40a68ce241f4fa98e310643936","SpanId":"0.2.1.3"}
            string[] parts = new string[3];
            parts[0] = log.Substring(1, 23).Trim();    //2018-04-10 20:43:30.419
            string sub = log.Substring(27);

            parts[1] = sub.Substring(0, sub.IndexOf("]")).Trim();  //Info
            parts[2] = log.Substring(log.IndexOf("{")).Trim();     //{json}

            try
            {
                entity = DynamicJson.Deserialize <LogEntity>(parts[2]);

                entity.LogTime = DateTime.Parse(parts[0]);

                entity.Level = parts[1];

                entity.HasException = parts[2].Contains("$exception");
            }
            catch (Exception ex)
            {
                entity = null;
                return(false);
            }

            return(true);
        }
Exemple #6
0
        public void Can_deserialize_dynamic_instance()
        {
            var dog          = new { Name = "Spot" };
            var json         = DynamicJson.Serialize(dog);
            var deserialized = DynamicJson.Deserialize(json);

            Assert.IsNotNull(deserialized);
            Assert.AreEqual(dog.Name, deserialized.Name);
        }
Exemple #7
0
        public void ServiceStackDynamicJson()
        {
            var     json = GetJson();
            dynamic t    = DynamicJson.Deserialize(json);

            if (t == null)
            {
                throw new ApplicationException("Test fails");
            }
        }
        public void Can_deserialize_dynamic_instance()
        {
            var dog  = new { Name = "Spot" };
            var json = DynamicJson.Serialize(dog);

            Assert.That(json, Is.EqualTo("{\"Name\":\"Spot\"}"));

            var deserialized = DynamicJson.Deserialize(json);

            Assert.IsNotNull(deserialized);
            Assert.That(deserialized.Name, Is.EqualTo(dog.Name));
        }
Exemple #9
0
        public void Test()
        {
            var d = new DynamicJson();

            d.Deserialize(Newtonsoft.Json.JsonConvert.SerializeObject(new
            {
                id    = "12321",
                bytea = 123,
                b     = true,
                array = new object[] { 123, true, 123
                                       , new  { id = 1, b = 123, c = new  { d = 1 } } }
            }));
        }
Exemple #10
0
        private static void Main(string[] args)
        {
            JsonChecker.Check("FadeJSON", p => { Json.FromFile(p); });
            JsonChecker.Check("JSON.NET", p => { JObject.Load(new JsonTextReader(new StreamReader(p))); });
            JsonChecker.Check("Jil", p => { JSON.DeserializeDynamic(new StreamReader(p)); });
            JsonChecker.Check("ServiceStack.Text", p => { DynamicJson.Deserialize(File.ReadAllText(p)); });
            JsonChecker.Check("jsonfx", p => { new JsonReader().Read(new StreamReader(new FileStream(p, FileMode.Open))); });
            if (!Directory.Exists("TestResults"))
            {
                Directory.CreateDirectory("TestResults");
            }
            var testFilePathList = Directory.GetFiles("TestDataFiles", "*.json", SearchOption.AllDirectories);

            TestJsonLibraries(testFilePathList);
            Console.ReadKey();
        }
Exemple #11
0
        public void RoundtripTest()
        {
            // This should even work with interfaces. Explicit cast to interface.
            ISomeInterface obj = new TheClass {
                Inner = new TheClass.InnerClass {
                    Foo = "bar", Bar = long.MaxValue
                }, Value = true
            };
            var serialized = DynamicJson.Serialize(obj);

            var(deserialized, type) = DynamicJson.Deserialize(serialized);

            type.Should().Be(typeof(TheClass));
            ((TheClass)deserialized).Inner.Foo.Should().Be(((TheClass)obj).Inner.Foo);
            ((TheClass)deserialized).Inner.Bar.Should().Be(((TheClass)obj).Inner.Bar);
            ((TheClass)deserialized).Value.Should().Be(((TheClass)obj).Value);
        }
Exemple #12
0
        static void Main(string[] args)
        {
            var movies = new[] {
                new { Title = "Star Trek: La película", Year = 1979 },
                new { Title = "Star Trek II: La ira de Khan", Year = 1982 },
                new { Title = "Star Trek III: En busca de Spock", Year = 1984 },
                new { Title = "Star Trek IV: Misión: salvar la Tierra", Year = 1986 },
                new { Title = "Star Trek V: La última frontera", Year = 1989 },
                new { Title = "Star Trek VI: Aquel país desconocido", Year = 1991 },
                new { Title = "Star Trek: La próxima generación", Year = 1994 },
                new { Title = "Star Trek: primer contacto", Year = 1996 },
                new { Title = "Star Trek: Insurrección", Year = 1998 },
                new { Title = "Star Trek: Némesis", Year = 2002 },
                new { Title = "Star Trek", Year = 2009 },
                new { Title = "Star Trek: en la oscuridad", Year = 2013 },
                new { Title = "Star Trek: sin límites (Hispanoamérica) Star Trek: más allá (España)", Year = 2016 }
            };

            Console.WriteLine(movies.ToJson());

            var json = "{\"Id\":\"fb1d17c7298c448cb7b91ab7041e9ff6\",\"Name\":\"John\",\"DateOfBirth\":\"\\/Date(317433600000-0000)\\/\"}";

            var obj = JsonObject.Parse(json);

            obj.Get <Guid>("Id").ToString().Print();
            obj.Get <string>("Name").Print();
            obj.Get <DateTime>("DateOfBirth").ToLongDateString().Print();

            dynamic dyn  = DynamicJson.Deserialize(json);
            string  id   = dyn.Id;
            string  name = dyn.Name;
            string  dob  = dyn.DateOfBirth;

            "DynamicJson: {0}, {1}, {2}".Print(id, name, dob);


            JsConfig.ConvertObjectTypesIntoStringDictionary = true;
            var map = (Dictionary <string, object>)json.FromJson <object>();

            map.PrintDump();

            Console.ReadKey();
        }
        public void Deserialize_dynamic_json_with_inner_obj_and_array()
        {
            var json = @"{""obj"":{""name"":""Alex"",""address"":{""street"":""zbra st.""},""phones"":[{""area"":""101"",""number"":""867-5309""},{""area"":""11"",""number"":""39967""}]}}";
            var dyn  = DynamicJson.Deserialize(json);
            var name = dyn.obj.name;

            Assert.AreEqual(name, "Alex");
            var address = dyn.obj.address.street;

            Assert.AreEqual(address, "zbra st.");
            var phone1 = dyn.obj.phones[0].number;

            Assert.AreEqual(phone1, "867-5309");
            var area2 = dyn.obj.phones[1].area;

            Assert.AreEqual(area2, "11");
            var phone2 = dyn.obj.phones[1].number;

            Assert.AreEqual(phone2, "39967");
        }
Exemple #14
0
        public void ServiceStackDynamicJsonWithParsing()
        {
            var     json = GetJson();
            dynamic d    = DynamicJson.Deserialize(json);
            var     t    = new TestStructure1()
            {
                StartActivity         = bool.Parse(d.StartActivity),
                FinishActivity        = bool.Parse(d.FinishActivity),
                Input                 = bool.Parse(d.Input),
                Output                = bool.Parse(d.Output),
                Verbose               = bool.Parse(d.Verbose),
                UseBufferForVerbose   = bool.Parse(d.UseBufferForVerbose),
                VerboseWithStackTrace = bool.Parse(d.VerboseWithStackTrace)
            };

            if (t == null)
            {
                throw new ApplicationException("Test fails");
            }
        }
Exemple #15
0
        static void Main(string[] args)
        {
            var movies = new[]
            {
                new { name = "Movie 1", year = 1985 },
                new { name = "Movie 2", year = 1986 }
            };


            var json = "{\"id\": 1, \"name\": \"sergio\"}";

            //Option 1
            var obj  = JsonObject.Parse(json);
            var id   = obj.Get <int>("id").ToString();
            var name = obj.Get <string>("name");
            //Console.WriteLine($"Id= {id} Name = {name}");

            //option 2
            dynamic dyn = DynamicJson.Deserialize(json);

            //Console.WriteLine($"Dinámico {dyn.id} {dyn.name}");

            //Option 3
            JsConfig.ConvertObjectTypesIntoStringDictionary = true;
            var map = (Dictionary <string, object>)json.FromJson <object>();

            map.PrintDump();

            /*
             * var idMap = map["id"];
             * var nameMap = map["name"];
             */



            //Console.WriteLine(movies.ToJson());

            Console.ReadKey();
            Console.WriteLine("FIN");
        }
Exemple #16
0
        /// <inheritdoc />
        protected override async Task <IReadOnlyList <HibernatedSessionInfo> > RestoreHibernatedSessionDatasAsync(OperationContext context)
        {
            var rootPath = Config.DataRootPath;

            var contentSessionDatas = await LocalContentServer.RestoreHibernatedSessionDatasAsync(FileSystem, rootPath);

            var infoDictionary = new Dictionary <int, HibernatedCacheSessionInfo>();

            if (FileSystem.HibernatedSessionsExists(rootPath, HibernatedSessionsFileName))
            {
                HibernatedSessions <HibernatedCacheSessionInfo> datas;
                try
                {
                    datas = await FileSystem.ReadProtectedHibernatedSessionsAsync <HibernatedCacheSessionInfo>(rootPath, HibernatedSessionsFileName);
                }
                catch (Exception e)
                {
                    Tracer.Debug(context, $"Failed to read protected hibernated cache sessions. Attempting to read unprotected data. Exception: {e}");
                    datas = await FileSystem.ReadHibernatedSessionsAsync <HibernatedCacheSessionInfo>(rootPath, HibernatedSessionsFileName);
                }

                foreach (var data in datas.Sessions)
                {
                    infoDictionary[data.Id] = data;
                }
            }

            return(contentSessionDatas.Select(contentData =>
            {
                if (infoDictionary.ContainsKey(contentData.Id))
                {
                    var cacheData = infoDictionary[contentData.Id];
                    var(obj, type) = DynamicJson.Deserialize(cacheData.SerializedSessionConfiguration);
                    if (obj is not PublishingCacheConfiguration config)
                    {
                        throw new Exception($"Deserialized configuration is not an {nameof(PublishingCacheConfiguration)}. Actual type: {type}");
                    }

                    return new HibernatedSessionInfo(
                        contentData.Id,
                        contentData.CacheName,
                        contentData.ExpirationUtcTicks,
                        new LocalCacheServerSessionData(
                            contentData.SessionData.Name,
                            contentData.SessionData.Capabilities,
                            contentData.SessionData.ImplicitPin,
                            contentData.SessionData.Pins,
                            cacheData.Pat,
                            config,
                            cacheData.PendingPublishingOperations),
                        contentData.SessionData.Pins.Count);
                }
                else
                {
                    return new HibernatedSessionInfo(
                        contentData.Id,
                        contentData.CacheName,
                        contentData.ExpirationUtcTicks,
                        new LocalCacheServerSessionData(contentData.SessionData),
                        contentData.SessionData.Pins.Count);
                }
            }).ToList());
        }