基于WinCE的JSON 类库 源码

时间:2022-03-04 11:17:40

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

 

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

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

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

 

测试代码:

基于WinCE的JSON 类库 源码基于WinCE的JSON 类库 源码
  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 的,今天算是发现宝贝了。呵呵