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(); } } }
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(); } }
/// <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)) ); } }
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); }
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); }
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)); }
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 } } } })); }
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(); }
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); }
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"); }
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"); } }
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"); }
/// <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()); }