public void TestIntPrimitiveType() { var reader = ThunderReader.Load("{\n\n}"); var abc = EasyJsonSerializer.Deserialize <AccessTokenModel>(reader); var test = EasyJsonSerializer.Serialize(new AccessTokenModel()); var target = 0; Console.WriteLine("target:" + target.ToString()); var text = EasyJsonSerializer.Serialize(target); target = EasyJsonSerializer.Deserialize <int>(text); var target2 = EasyJsonSerializer.Deserialize <int[]>(" "); Console.WriteLine("target:" + target.ToString()); Console.WriteLine("-----------------------"); target = 11; Console.WriteLine("target:" + target.ToString()); text = EasyJsonSerializer.Serialize(target); target = EasyJsonSerializer.Deserialize <int>(text); Console.WriteLine("target:" + target.ToString()); Console.WriteLine("-----------------------"); target = 192; Console.WriteLine("target:" + target.ToString()); text = EasyJsonSerializer.Serialize(target); target = EasyJsonSerializer.Deserialize <int>(text); Console.WriteLine("target:" + target.ToString()); Console.WriteLine("-----------------------"); }
/// <summary> /// 反序列化对象 /// </summary> /// <param name="json">源字符串</param> /// <param name="targetType">目标类型</param> /// <param name="setting">配置</param> /// <returns></returns> public static object Deserialize(string json, Type targetType, JsonDeserializeSetting setting) { /*object类*/ if (targetType == typeof(object)) { throw new ArgumentNullException("当前不支持object反序列化"); } if (string.IsNullOrEmpty(json)) { return(null); } if (json.Equals("null")) { return(null); } if (targetType == null) { return(null); } var @delegate = QueryDeserializeBuilder(targetType, setting); var reader = ThunderReader.Load(json); { return(@delegate(reader, setting, 0)); } }
public void TestParse1_7_1() { var json = " a \\\\ 1 e"; var list = ThunderReader.Load(json); var node = list.FirstOrDefault(); Xunit.Assert.NotNull(node); Xunit.Assert.True(node.Escaping == true); Xunit.Assert.True(node.Segment.Offset == 0); Xunit.Assert.True(node.Segment.Offset + node.Segment.Count == 8); Xunit.Assert.True(node.Key == ""); Xunit.Assert.True(node.Level == 0); Xunit.Assert.True(node.Node == null); Xunit.Assert.True(node.NodeType == Never.Serialization.Json.Deserialize.ContentNodeType.String); Xunit.Assert.True(node.Original == json); Xunit.Assert.True(node.Segment != null); //Xunit.Assert.True(node.Segment[0] == ' '); //Xunit.Assert.True(node.Segment[1] == 'a'); //Xunit.Assert.True(node.Segment[2] == ' '); //Xunit.Assert.True(node.Segment[3] == '\\'); //Xunit.Assert.True(node.Segment[4] == '\\'); //Xunit.Assert.True(node.Segment[5] == ' '); //Xunit.Assert.True(node.Segment[6] == '1'); //Xunit.Assert.True(node.Segment[7] == ' '); //Xunit.Assert.True(node.Segment[8] == 'e'); Xunit.Assert.True(node.Segment.Count == 9); Xunit.Assert.True(node.ToString() == json); }
public void TestTewt() { var text = "{a:1 }"; var reader = ThunderReader.Load(text); text = " 1"; reader = ThunderReader.Load(text); var it = Never.Serialization.EasyJsonSerializer.Deserialize <int>(reader); }
public void TestIser3() { var text = System.IO.File.ReadAllText(@"d:\json.txt"); var list = ThunderReader.Load(text); var a = EasyJsonSerializer.Deserialize <Dictionary <string, string> >(list); list = ThunderReader.Load(text); var b = EasyJsonSerializer.Deserialize <MyUser>(list); }
public void TestArrayLevel3() { var text = System.IO.File.ReadAllText(@"c:\json.txt"); var list = ThunderReader.Load(text); var cmd = EasyJsonSerializer.Deserialize <MyStringCommand>(list); text = System.IO.File.ReadAllText(@"c:\json.txt"); list = ThunderReader.Load(text); text = System.IO.File.ReadAllText(@"c:\json.txt"); list = ThunderReader.Load(text); }
public void TestDemo() { var demo = new TeseDemo() { Name = "Lxl", UId = 365, ULong = 54654 }; var text = EasyJsonSerializer.Serialize(demo); var list = ThunderReader.Load(text); var demo2 = EasyJsonSerializer.Deserialize <TeseDemo>(text); }
/// <summary> /// 装载数据到字典中 /// </summary> /// <typeparam name="T"></typeparam> /// <typeparam name="V"></typeparam> /// <param name="dictionary">The result.</param> /// <param name="reader">The reader.</param> /// <param name="setting">The setting.</param> /// <param name="name">The name.</param> /// <param name="arrayLevel"></param> public virtual void Load <T, V>(IDictionary <T, V> dictionary, IDeserializerReader reader, JsonDeserializeSetting setting, string name, int arrayLevel) { var node = reader.Read(name); if (node == null) { if (name != null) { return; } while (true) { var item = reader.MoveNext(); if (item == null) { break; } var key = ZzzZzDeserializerBuilder <T> .Register(setting).Invoke(ThunderReader.Load(item.Key), setting, arrayLevel); var value = ZzzZzDeserializerBuilder <V> .Register(setting).Invoke(reader.Parse(item), setting, arrayLevel); dictionary[key] = value; } return; } if (node.NodeType == ContentNodeType.String) { return; } if (node.NodeType != ContentNodeType.Object) { throw new ArgumentException(string.Format("字典只能为key-value形式,当前形式为{0}", node.NodeType.ToString())); } foreach (var n in (IList <JsonContentNode>)node.Node) { var key = ZzzZzDeserializerBuilder <T> .Register(setting).Invoke(ThunderReader.Load(n.Key), setting, arrayLevel); var strkey = key as string; var value = ZzzZzDeserializerBuilder <V> .Register(setting).Invoke(reader.Parse(n), setting, arrayLevel); dictionary[key] = value; } }
/// <summary> /// 反序列化对象 /// </summary> /// <typeparam name="T">目标类型</typeparam> /// <param name="json">源字符串</param> /// <param name="setting">配置</param> /// <returns></returns> public static T Deserialize <T>(string json, JsonDeserializeSetting setting) { if (string.IsNullOrEmpty(json)) { return(default(T)); } if (json.Equals("null")) { return(default(T)); } var reader = ThunderReader.Load(json); { var build = ZzzZzDeserializerBuilder <T> .Register(setting); return(build.Invoke(reader, setting, 0)); } }
public void TestParse1() { var json = "1"; var list = ThunderReader.Load(json); var node = list.FirstOrDefault(); Xunit.Assert.NotNull(node); Xunit.Assert.True(node.Escaping == false); Xunit.Assert.True(node.Segment.Offset == 0); Xunit.Assert.True(node.Segment.Offset + node.Segment.Count == 1); Xunit.Assert.True(node.Key == ""); Xunit.Assert.True(node.Level == 0); Xunit.Assert.True(node.Node == null); Xunit.Assert.True(node.NodeType == Never.Serialization.Json.Deserialize.ContentNodeType.String); Xunit.Assert.True(node.Original == json); Xunit.Assert.True(node.Segment != null); Xunit.Assert.True(node.Segment.Count == 1); Xunit.Assert.True(node.ToString() == json); }
public void TestDemo2() { var demo = new TestDemo2() { Name = "Lxl", UId = 365, C = '\ufff2', ULong = 54654, Demo3 = new TestDemo3() { Name = "Lxl33", UId = 3665, ULong = 154654, } }; var text = EasyJsonSerializer.Serialize(demo); var list = ThunderReader.Load(text); var demo2 = EasyJsonSerializer.Deserialize <TestDemo2>(text); }
/// <summary> /// 装载数据到字典中 /// </summary> /// <param name="dictionary">The result.</param> /// <param name="reader">The reader.</param> /// <param name="setting">The setting.</param> /// <param name="name">The name.</param> /// <param name="arrayLevel"></param> public virtual void LoadStringKeyStringvalue(IDictionary <string, string> dictionary, IDeserializerReader reader, JsonDeserializeSetting setting, string name, int arrayLevel) { var node = reader.Read(name); if (node == null) { if (name != null) { return; } while (true) { var item = reader.MoveNext(); if (item == null) { break; } var key = ZzzZzDeserializerBuilder <string> .Register(setting).Invoke(ThunderReader.Load(item.Key), setting, arrayLevel); if (string.IsNullOrEmpty(key)) { continue; } var itemValue = item.GetValue(); if (itemValue == null) { dictionary[key] = ""; continue; } dictionary[item.Key] = item.ToString(); //if (item.NodeType == ContentNodeType.String) //{ // dictionary[key] = new string(itemValue); //} //else //{ // dictionary[item.Key] = item.ToString(); //} } return; } if (node.NodeType == ContentNodeType.String) { return; } if (node.NodeType != ContentNodeType.Object) { throw new ArgumentException(string.Format("字典只能为key-value形式,当前形式为{0}", node.NodeType.ToString())); } foreach (var item in (IList <JsonContentNode>)node.Node) { var key = ZzzZzDeserializerBuilder <string> .Register(setting).Invoke(ThunderReader.Load(item.Key), setting, arrayLevel); if (string.IsNullOrEmpty(key)) { continue; } var nValue = item == null ? ArraySegmentValue.Empty : item.GetValue(); if (nValue.IsNullOrEmpty) { dictionary[key] = ""; continue; } dictionary[item.Key] = item.ToString(); //if (item.NodeType == ContentNodeType.String) //{ // dictionary[key] = new string(nValue); //} //else //{ // dictionary[item.Key] = item.ToString(); //} } }
public void TestParse2_1() { var json = " [a,b,c] "; var list = ThunderReader.Load(json); }
public void TestParse2_3() { var json = "['a','\\\\b','c']"; var list = ThunderReader.Load(json); }
public void TestParse3() { var json = "{a:a,b: 'e',c: c} "; var list = ThunderReader.Load(json); }
public void TestWriteObject() { var a = new TeseDemo1 { C = '\u0022', Empty = " ", Id = int.MinValue + 1, Byte = 233, Short = -6530, Long = -9676546546L, UShort = 6530, ULong = 9676546546L, UId = 6546545, Name = "lxl", ABC = ABC.B, DDD = "}", DDD2 = "ddd", M = "dg", DDD3 = "ddd", DDD4 = "ddd", DDD5 = "ddd2", DDD6 = "ddd2", Guid = Guid.NewGuid(), Amount = -79228162514264337593543950335m, Time = DateTime.Now, Object = new TwoLevel { Name = 234 }, Array = new TwoLevel[][] { new TwoLevel[] { new TwoLevel { Name = 234 }, new TwoLevel { Name = 234 } }, null, new TwoLevel[] { new TwoLevel { Name = 234 }, new TwoLevel { Name = 234 } }, }, Enumables = new[] { new object[] { new { Id = 56456 }, new { EF = "dgd" } } }, EnumArray = new ABC[] { ABC.A, ABC.B, ABC.C }, }; var text = EasyJsonSerializer.Serialize(a); var aa = EasyJsonSerializer.Deserialize <TeseDemo1>(text); var reader = ThunderReader.Load(text); var @obj = EasyJsonSerializer.Deserialize <TwoLevel[][]>(reader.Parse(reader.Read("Array"))); return; }
public void TestArrayLevel2() { var text = "[[[a,b],[c,d]]]"; var list = ThunderReader.Load(text); }