基于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[] { , , , - }, "_");
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 = ;
} [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 = ,
Disabled = ,
}

下载地址:

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

基于WinCE的JSON 类库 源码的更多相关文章

  1. 基于vitamio的网络电视直播源码

    这个项目是基于vitamio的网络电视直播源码,也是一个使用了vitamio的基于安卓的网络直播项目源码,可能现在网上已经有很多类似这样的视频播放应用了,不过这个还是相对来说比较完整的,希望这个案例能 ...

  2. json.parseArray源码解析

    json.parseArray源码解析 public static <T> List<T> parseArray(String text, Class<T> cla ...

  3. js便签笔记(10) - 分享:json.js源码解读笔记

    1. 如何理解“json” 首先应该意识到,json是一种数据转换格式,既然是个“格式”,就是个抽象的东西.它不是js对象,也不是字符串,它只是一种格式,一种规定而已. 这个格式规定了如何将js对象转 ...

  4. 基于jQuery经典扫雷游戏源码

    分享一款基于jQuery经典扫雷游戏源码.这是一款网页版扫雷小游戏特效代码下载.效果图如下: 在线预览   源码下载 实现的代码. html代码: <center> <h1>j ...

  5. 配置Eclipse可以查看JDK类库源码

    一.配置方法 配置Eclipse可以查看JDK类库源码 Window->Preferences->Java->Installed JREs 若没有JRE,需要自己添加进来,有的话,点 ...

  6. Android studio导入第三方类库源码以及jar包

    新建一个Android项目,项目结构如下: 1.添加第三方类库源码 首先将第三方类库考入与app同级的目录下: 之后,在build.gradle(Moudule:app)下添加编译代码:在seting ...

  7. 适合新手:从零开发一个IM服务端(基于Netty,有完整源码)

    本文由“yuanrw”分享,博客:juejin.im/user/5cefab8451882510eb758606,收录时内容有改动和修订. 0.引言 站长提示:本文适合IM新手阅读,但最好有一定的网络 ...

  8. Spring3.2 中 Bean 定义之基于 XML 配置方式的源码解析

    Spring3.2 中 Bean 定义之基于 XML 配置方式的源码解析 本文简要介绍了基于 Spring 的 web project 的启动流程,详细分析了 Spring 框架将开发人员基于 XML ...

  9. TCP/IP以及Socket聊天室带类库源码分享

    TCP/IP以及Socket聊天室带类库源码分享 最近遇到个设备,需要去和客户的软件做一个网络通信交互,一般的我们的上位机都是作为客户端来和设备通信的,这次要作为服务端来监听客户端,在这个背景下,我查 ...

随机推荐

  1. Task:取消异步计算限制操作 & 捕获任务中的异常

    Why:ThreadPool没有内建机制标记当前线程在什么时候完成,也没有机制在操作完成时获得返回值,因而推出了Task,更精确的管理异步线程. How:通过构造方法的参数TaskCreationOp ...

  2. Wix 安装部署教程(十三) -- 多语言安装包

    这几天摸索WIX的多语言安装包(这里是Wix的setup 工程,不是Bundle),终于走通了,感谢网友uni的指点.WIX的多语言安装包能够根据系统环境自动切换界面语言,你也可以通过命令指定语言.下 ...

  3. win10最新预览版9926使用评估

    1月21日微软发布会,终于在周一发布了新的预览版本Build 9926,这个并不是客户预览版,仍然是开发者预览版,如图: 如果要查看自己的windows 10是那个版本,打开运行窗口,输入如下命令: ...

  4. java提高篇(十一)-----强制类型转换

    在java中强制类型转换分为基本数据类型和引用数据类型两种,这里我们讨论的后者,也就是引用数据类型的强制类型转换. 在Java中由于继承和向上转型,子类可以非常自然地转换成父类,但是父类转换成子类则需 ...

  5. Linux下安装SVN服务端小白教程

    安装 使用yum安装非常简单: yum install subversion 配置 创建仓库 我们这里在/home下建立一个名为svn的仓库(repository),以后所有代码都放在这个下面,创建成 ...

  6. How to Change RabbitMQ Queue Parameters in Production?

    RabbitMQ does not allow re-declaring a queue with different values of parameters such as durability, ...

  7. ubuntu:activate root

    You must activate the usr of root,when using a pc with a new os of ubuntu. This command: sudo passwd ...

  8. Hibernate中对象的三个状态解析

    Hibernate 将操作的对象分为三种状态: 1. 瞬时 (Transient )/临时状态/自由状态 持久 (Persistent) 脱管 (Detached) 瞬时对象特征: 第一.不处于 Se ...

  9. css 常见时间轴的做法(————————————————时间轴——————————————————)

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  10. JS工具

       /*** @author Direction*/ /*** JALJA 命名空间 namespace*/var JALJA= {} ; /*** Interface Class* 接口类需要2个 ...