Пример #1
0
        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("-----------------------");
        }
Пример #2
0
        /// <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));
            }
        }
Пример #3
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);
        }
Пример #4
0
        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);
        }
Пример #5
0
        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);
        }
Пример #6
0
        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);
        }
Пример #7
0
        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);
        }
Пример #8
0
        /// <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;
            }
        }
Пример #9
0
        /// <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));
            }
        }
Пример #10
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);
        }
Пример #11
0
        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);
        }
Пример #12
0
        /// <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();
                //}
            }
        }
Пример #13
0
 public void TestParse2_1()
 {
     var json = " [a,b,c] ";
     var list = ThunderReader.Load(json);
 }
Пример #14
0
 public void TestParse2_3()
 {
     var json = "['a','\\\\b','c']";
     var list = ThunderReader.Load(json);
 }
Пример #15
0
 public void TestParse3()
 {
     var json = "{a:a,b: 'e',c: c} ";
     var list = ThunderReader.Load(json);
 }
Пример #16
0
        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;
        }
Пример #17
0
 public void TestArrayLevel2()
 {
     var text = "[[[a,b],[c,d]]]";
     var list = ThunderReader.Load(text);
 }