zoukankan      html  css  js  c++  java
  • 基于WinCE的JSON 类库 源码

    基于WinCE的JSON 类库,可以将对象序列化成字符串和文件。

    提示,其在反序列化时有一个BUG:

    如果对象的某个字段值为 null,将其序列化成字符串,然后将该字符串反序列化成对象时会报异常。

    这个通常影响不大,在序列化时为对象的字段都提供一个非 null 的默认值即可。

    测试代码:

      internal class Program
        {
            private static void Main(string[] args)
            {            
                string json = Converter.Serialize(new User("name", "password", AccountStatus.Enabled));
                Converter.Serialize("out.txt", new int[] { 1, 2, 3, -4 }, "_");
                Console.WriteLine(json);
    
    
                User user = Converter.Deserialize<User>(json, "_");
                int[] values = Converter.DeserializeFromFile<int[]>("out.txt", "_");
                Console.WriteLine(user.UserName);
                
                Console.WriteLine("Done. Press enter to exit");
                Console.ReadLine();
            }
        }
    
        public class BaseUser
        {
            private int _id = 1;
        }
    
        [SerializeIncludingBase]
        public class User : BaseUser
        {
            private string _userName;
            private string _password;
            [NonSerialized]
            private readonly Role _role;
            private AccountStatus _status;    
            private Thing _think = new Thing();
    
            public string UserName
            {
                get { return _userName; }
                set { _userName = value; }
            }
            public string Password
            {
                get { return _password; }
                set { _password = value; }
            }
            public AccountStatus Status
            {
                get { return _status; }
                set { _status = value; }
            }
            public Role Role
            {
                get { return _role; }
            }
            public Thing Thing
            {
                get { return new Thing(); }
            }
    
            public User(string userName, string password, AccountStatus status)
            {
                UserName = userName;
                Password = password;
                Status = status;
                _role = new Role(DateTime.Now, "Admin", this);
            }
    
            private User()
            {
            }
        }
    
        public class Role
        {
            public Role(DateTime expires, string name, User user)
            {
                Expires = expires;
                Name = name;
                User = user;
            }
    
            public DateTime Expires { get; set; }
    
            public string Name { get; set; }
    
            public User User { get; set; }
    
            public Thing Thing
            {
                get { return new Thing(); }
            }
        }
    
        public class Thing
        {
            private string _name = "ABC";
    
            public string Name
            {
                get { return _name; }
                set { _name = value; }
            }
        }
    
        public enum AccountStatus
        {
            Enabled = 1,
            Disabled = 2,
        }
    View Code

    下载地址:

    http://files.cnblogs.com/08shiyan/CodeBetter.JsonCF_v0.2_Source.zip 

    ————————————————

    续:

    强大的 Newtonsoft.Json

    http://files.cnblogs.com/08shiyan/Newtonsoft.Json.Compact.zip

    之前一直用基于 .NET 的,没发现有基于 .NET CF 的,今天算是发现宝贝了。呵呵

  • 相关阅读:
    Click: 命令行工具神器
    Pipenv: Python包管理神器
    如何让你的Python程序支持多语言
    Volatile变量
    简单排查java应用CPU飙高的线程问题
    java中的clone
    接口限流
    HTTP协议详解
    [转]nginx 源码学习笔记(十五)—— ngx_master_process_cycle 多进程(一)
    nginx slab内存管理
  • 原文地址:https://www.cnblogs.com/08shiyan/p/3198048.html
Copyright © 2011-2022 走看看