基于WinCE的JSON 类库 源码

转载 2013年12月04日 09:15:25

基于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,
    }

下载地址:

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 的,今天算是发现宝贝了。呵呵


文章转载自:

http://www.cnblogs.com/08shiyan/p/3198048.html




WinCe,Json类库

  • 2012年02月20日 16:59
  • 21KB
  • 下载

C# Newtonsoft.Json类库源码包

  • 2014年07月14日 12:53
  • 6.82MB
  • 下载

Java集合类库 LinkedList 源码解析

基于JDK 1.7,和ArrayList进行比较分析Java已经有了ArrayList,用来存放元素,对元素的操作都很方便。为什么还会有LinkedList呢?我们都知道ArrayList获取元素很快...

WinCe Json 源码

  • 2015年01月29日 12:49
  • 22KB
  • 下载

OpenCV中常用类库含义和源码

OpenCV官网教程:http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/tutorials.html,官网帮助才是王道!  ...

策略模式解析-JAVA类库中TreeSet源码为例

转载自:http://www.cnblogs.com/wukenaihe/archive/2013/04/03/2997279.html 策略模式-JAVA类库TreeSet为例 1 策略模式...

jdk类库源码分析-StringBuffer、StringBuilder

java类库源码

jBPM源码需要的第三方类库

在eclipse中运行jbpm4.4的流程测试用例       JBPM的源代码中有一些流程测试用例,对我们理解JBPM的运行机制和以JBPM为流程引擎进行二次开发都有很大的帮助,同时对我们理解JD...

jdk类库源码分析-String类

从今天开始研究jdk基础类库的源码,从中学习优秀的设计思想,提高自己的能力。至于怎么查看源码,这里不多说,网上很多教程,直接上干货儿,欢迎大家提出宝贵意见,共同学习,一起进步。(这里我研究的是jdk1...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:基于WinCE的JSON 类库 源码
举报原因:
原因补充:

(最多只允许输入30个字)