Windows Live Writer 测试2

   1:  using System;
   2:  using System.Collections.Generic;
   3:  using System.Linq;
   4:  using System.Text;
   5:  using System.Runtime.Serialization.Json;
   6:  using System.IO;
   7:  using System.Runtime.Serialization;
   8:   
   9:  namespace JsonDemo
  10:  {
  11:      class Program
  12:      {
  13:          static void Main(string[] args)
  14:          {
  15:              Book b = new Book { BookName = "三国演义", Author = "罗贯中", Category = "四大名著", Page = 1000 };
  16:              Book b1 = new Book { BookName = "水浒传", Author = "施耐庵", Category = "四大名著", Page = 1000 };
  17:              b.SameCategory.Add(b1);
  18:              string json = b.ToJsonString();
  19:              Console.WriteLine(json);
  20:              Book b2 = Book.CreateObjectByJson<Book>(json);
  21:              Console.ReadLine();
  22:          }
  23:      }
  24:   
  25:      [DataContract(Namespace = "JsonDemo")]
  26:      class BaseClass
  27:      {
  28:          public virtual string ToJsonString()
  29:          {
  30:              DataContractJsonSerializer ser = new DataContractJsonSerializer(this.GetType());
  31:              using (Stream stream = new MemoryStream())
  32:              {
  33:                  ser.WriteObject(stream, this);
  34:                  byte[] buffer = new byte[stream.Length];
  35:                  stream.Position = 0;
  36:                  stream.Read(buffer, 0, buffer.Length);
  37:                  string json = Encoding.UTF8.GetString(buffer);
  38:                  return json;
  39:              }
  40:          }
  41:   
  42:          public static T CreateObjectByJson<T>(string json) where T : BaseClass
  43:          {
  44:              DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
  45:              using (MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(json)))
  46:              {
  47:                  T obj = ser.ReadObject(stream) as T;
  48:                  return obj;
  49:              }
  50:          }
  51:      }
  52:      //
  53:      [DataContract(Namespace = "JsonDemo.Book")]
  54:      class Book : BaseClass
  55:      {
  56:          [DataMember(Order = 0)]
  57:          public string BookName { get; set; }
  58:   
  59:          [DataMember(Order = 1)]
  60:          public int Page { get; set; }
  61:   
  62:          [DataMember(Order = 2)]
  63:          public string Category { get; set; }
  64:   
  65:          [DataMember(Order = 3)]
  66:          public string Author { get; set; }
  67:   
  68:          List<Book> _sameCategory;
  69:   
  70:          [DataMember(Order = 4)]
  71:          public List<Book> SameCategory
  72:          {
  73:              get
  74:              {
  75:                  if (_sameCategory == null)
  76:                  {
  77:                      _sameCategory = new List<Book>();
  78:                  }
  79:                  return _sameCategory;
  80:              }
  81:          }
  82:      }
  83:   
  84:  }
posted @ 2013-12-05 11:38  多夢的歲月  阅读(271)  评论(2编辑  收藏  举报