欢迎光临

木子屋

标题: .NET 3.5 JSON序列化/反序列化类Javascri&#112;tSerializer简单示例

作者: dnawo

日期: 2012-08-28 10:45 AM

分类: Web编程

内容: 复制内容到剪贴板 程序代码//引用System.Web.Extensions
using System;
using System.Web.Script.Serialization;
namespace ConsoleApplication1
{
class User
{
public int Id { get; set; }
public string Name { get; set; }
public DateTime Created { get; set; }
}
class Program
{
static void Main(string[] args)
{
JavascriptSerializer serializer = new JavascriptSerializer();
User user = new User();
user.Id = 1;
user.Name = "dnawo";
user.Created = DateTime.Now;
//序列化
Console.WriteLine("序列化：");
string json = serializer.Serialize(user);
Console.WriteLine(json);
//反序列化
Console.WriteLine("反序列化：");
User user1 = serializer.Deserialize<User>(json);
Console.WriteLine(user1.Name);
Console.ReadKey();
}
}
}
运行结果：
引用内容序列化：
{"Id":1,"Name":"dnawo","Created":"\/Date(1346119447875)\/"}
反序列化：
dnawo
使用ScriptIgnore指定某些类成员不序列化
复制内容到剪贴板 程序代码class User
{
public int Id { get; set; }
public string Name { get; set; }
[ScriptIgnore]
public DateTime Created { get; set; }
}
运行结果：
引用内容{"Id":1,"Name":"dnawo"}
常见问题
问：为什么DateTime类型序列化的结果为"\/Date(1346119447875)\/"？
答：使用Reflector跟踪JavascriptSerializer.Serialize方法，DateTime类型序列化代码如下：
复制内容到剪贴板 程序代码private static void SerializeDateTime(DateTime datetime, StringBuilder sb, SerializationFormat serializationFormat)
{
if (serializationFormat == SerializationFormat.JSON)
{
sb.Append("\"\\/Date(");
sb.Append((long) ((datetime.ToUniversalTime().Ticks - DatetimeMinTimeTicks) / 0x2710L));
sb.Append(")\\/\"");
}
else
{
sb.Append("new Date(");
sb.Append((long) ((datetime.ToUniversalTime().Ticks - DatetimeMinTimeTicks) / 0x2710L));
sb.Append(")");
}
}

+ 查看当前日志评论 (0)

登录

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 1.119 ms

返回

标题: .NET 3.5 JSON序列化/反序列化类Javascri&#112;tSerializer简单示例

你没有权限发表评论

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 1.119 ms

返回

暂无评论

返回

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 1.149 ms

返回