JsonHelper


// .Net 3.5
namespace Test
{
    using System;
    using System.Text;
    using System.IO;
    using System.Xml;
    using Test;
    using Microshaoft;
    public class Class1
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        //[STAThread]
        static void Main(string[] args)
        {
            //
            // TODO: 在此处添加代码以启动应用程序
            //
            JsonObject x = new JsonObject();
            string json = JsonSerializeHelper.JavaScriptSerialize<JsonObject>(x);
            Console.WriteLine(json);
            JsonObject y = JsonSerializeHelper.DataContractJsonDeserialize<JsonObject>(json); 
            Console.WriteLine(y.F1);
            jsonObject z = y.F4;
            Console.WriteLine("{0},{1},{2}",z.f2 + 10, y.F5[0].f3[1], y.F5[0].f4[0]);
        }
    }
}
namespace Test
{
    using System;
    using System.Collections.Generic;
    using System.Runtime.Serialization;
    [DataContract]
    public class JsonObject
    {
        [DataMember]
        public string F1 = "AAAAA";
        [DataMember]
        public int F2 = 100;
        [DataMember]
        private string _F3 = "BBBB";
        public void Test()
        {
        }
        [DataMember]
        public jsonObject F4 = new jsonObject();
        [DataMember]
        public jsonObject[] F5 = new jsonObject[]
                                        {
                                            new jsonObject()
                                            , new jsonObject()
                                        };
    }
    [DataContract]
    public class jsonObject
    {
        [DataMember]
        public string f1 = "测试";
        [DataMember]
        public int f2 = 10;
        [DataMember]
        public string[] f3 = new string[]{"测试1","测试"};
        [DataMember]
        public List<string> f4 = new List<string>();
        
        public jsonObject()
        {
            f4.Add("测试Tyrannosaurus");
            f4.Add("Amargasaurus");
            f4.Add("Mamenchisaurus");
            f4.Add("Deinonychus");
            f4.Add("Compsognathus");
        }
    }
}
namespace Microshaoft
{
    using System;
    using System.IO;
    using System.Text;
    using System.Runtime.Serialization.Json;
    //“System.Web.Script.Serialization.JavaScriptSerializer.JavaScriptSerializer()”已过时:
    //“The recommended alternative is System.Runtime.Serialization.DataContractJsonSerializer.”
    using System.Web.Script.Serialization;
    public static class JsonSerializeHelper
    {
        public static string DataContractJsonSerialize<T>(T jsonObject)
        {
            DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));
            MemoryStream ms = new MemoryStream();
            serializer.WriteObject(ms, jsonObject);
            string json = Encoding.UTF8.GetString(ms.GetBuffer());
            ms.Close();
            ms.Dispose();
            ms = null;
            return json;
        }
        public static T DataContractJsonDeserialize<T>(string json)
        {
            DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));
            MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json));
            T jto = (T) serializer.ReadObject(ms);
            ms.Close();
            ms.Dispose();
            ms = null;
            return jto; 
        }
        public static string JavaScriptSerialize<T>(T jsonObject)
        {
            JavaScriptSerializer serializer = new JavaScriptSerializer();
            StringBuilder sb = new StringBuilder();
            serializer.Serialize(jsonObject, sb);
            return sb.ToString();
        }
        public static T JavaScriptDeserialize<T>(string json)
        {
            return (T) new JavaScriptSerializer().Deserialize<T>(json); 
        }
    }
}

posted @ 2008-07-21 13:01  于斯人也  阅读(13351)  评论(2编辑  收藏  举报