基于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. EF6(CodeFirst)+MySql开发脱坑指南

    废话 话说当年,在一个春光明媚的晌午,邂逅了迷人的丁香姑娘,从此拜倒在了她的石榴裙下,至今不能自拔,这位丁香姑娘就是ORM思想. 所谓ORM思想,我的理解就是根据一定的规则,把程序中的对象和数据库中的 ...

  2. DOM何时Ready

    由于script标签在被加载完成后会立即执行其中代码,如果在代码中要访问HTMLElement,可是这时候元素还没有加载进来,所以对元素的操作统统无效. 最早的时候使用window.onload = ...

  3. js DOM优化相关探索

    我在这尝试两个方面:-->DOM与js -->DOM与浏览器 (最近在秒味视频上学到不少,哈哈哈) 一.DOM与js 1.js与dom的交互问题 频繁的与dom交互,是一件浪费时间与金钱的 ...

  4. Java中文编码小结

    Java中文编码小结 1. 只有 字符到字节 或者 字节到字符 的转换才存在编码转码; 2. Java String 采用 UTF-16 编码方式存储所有字符.unicode体系采用唯一的码点表示唯一 ...

  5. [异常解决] MPU6050启动异常读出陀螺仪和加速度计的值全为0的解决办法

    在调试一个自己做的手环,每次用keil烧写好程序运行的蓝牙.陀螺仪都是正常的.但是掉电再上电之后蓝牙是好的.陀螺仪可以读出ID但是读出的加速度和角速度数据全为0. 下面是发生问题时main函数的前面部 ...

  6. buildbot入门系列—介绍篇

    一.介绍 1. buildbot是一个开源的基于python的持续集成系统,它能够以下三种方式触发相应的自动构建和测试运行,从而迅速的发现问题所在,同时指出造成这个错误的开发人员,当然我们还可以通过页 ...

  7. UIButton添加倒计时

    最近一个项目有获取手机短信跟邮箱验证码功能, 所以要加一个UIButton倒计时功能 例子代码如下: //获取验证码按钮 - (IBAction)getButtonClick:(UIButton *) ...

  8. Atitit qzone qq空间博客自动点赞与评论工具的设计与实现

    Atitit qzone qq空间博客自动点赞与评论工具的设计与实现 Qzone发送评论的原理 首先,有个a标签, <a class="c_tx3" href="j ...

  9. 3D打印:三维智能数字化创造(全彩)

    3D打印:三维智能数字化创造(全彩)(全球第一本系统阐述3D打印与3D智能数字化的专业著作) 吴怀宇 编   ISBN 978-7-121-22063-0 2014年1月出版 定价:99.00元 42 ...

  10. C#学习系列-.NET体系结构

    .NET框架概述 .NET 框架为.NET应用程序运行提供虚拟机环境,为.NET应用程序提供编译.运行.内存管理.垃圾回收.安全等服务.   .NET框架组成部分 1.公共语言运行时(Common L ...