木子屋 Dnawo's BLOG

.NET 3.5 JSON序列化/反序列化类DataContractJsonSerializer示例

👤 dnawo 📅 2012-08-28 👁 4878 👍 0 💬 0 🔄 来源:本站原创
//引用System.ServiceModel.Web和System.Runtime.Serialization
using System;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;
using System.Text;

namespace ConsoleApplication1
{
    [DataContract]
    class User
    {
        [DataMember]
        public int Id { get; set; }
        [DataMember]
        public string Name { get; set; }
        [DataMember]
        public DateTime Created { get; set; }
    }

    class Program
    {
        static void Main(string[] args)
        {
            DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(User));
            User user = new User();
            user.Id = 1;
            user.Name = "dnawo";
            user.Created = DateTime.Now;            

            //序列化
            Console.WriteLine("序列化:");
            string json = string.Empty;
            using (MemoryStream stream = new MemoryStream())
            {
                serializer.WriteObject(stream, user);
                json = Encoding.UTF8.GetString(stream.ToArray());
            }
            Console.WriteLine(json);
            //反序列化
            Console.WriteLine("反序列化:");
            User user1;
            using (MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(json)))
            {
                user1 = (User)serializer.ReadObject(stream);
            }
            Console.WriteLine(user1.Name);

            Console.ReadKey();
        }
    }
}

说明:实体类必须标以DataContractAttribute特性,其所有要序列化的成员标以 DataMemberAttribute 特性,否则无法正常序列化。

运行结果:

序列化:
{"Created":"\/Date(1346123311125+0800)\/","Id":1,"Name":"dnawo"}
反序列化:
dnawo

使用DataMember缩写类成员名称

[DataContract]
class User
{
    [DataMember(Name = "id")]
    public int Id { get; set; }
    [DataMember(Name = "na")]
    public string Name { get; set; }
    [IgnoreDataMember]
    public DateTime Created { get; set; }
}

运行结果:

{"id":1,"na":"dnawo"}

评论(0)

暂无评论。

验证码
评论需审核通过后显示
← 上一篇 .NET 3.5 JSON序列化/反序列化类Javascript… 下一篇 → 只可添加来自Chrome网上应用店的扩展程序、应用和用户脚本