zoukankan      html  css  js  c++  java
  • csharp:.net 3.5 using System.Runtime.Serialization.Json read json

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    //http://msdn.microsoft.com/zh-cn/library/system.runtime.serialization.datacontractattribute.aspx
    //using System.Web.Script.Serialization;
    using System.Text;
    using System.IO;
    using System.Runtime;
    using System.Runtime.Serialization;// 添加 System.Runtime.Serialization
    using System.Runtime.Serialization.Json;//添加 System.ServiceModel和System.ServiceModel.Web的引用
    using System.Xml;
    using System.Runtime.Serialization.Formatters;
    
    
    namespace JsonNetDemo
    {
        public partial class WebForm1 : System.Web.UI.Page
        {
            string dataString = string.Empty;
            
            /// <summary>
            /// 
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            protected void Page_Load(object sender, EventArgs e)
            {
    
            }
            /// <summary>
            /// 对象转化为JSON字符串
            /// http://www.cnblogs.com/coderzh/archive/2008/11/25/1340862.html
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            protected void Button1_Click(object sender, EventArgs e)
            {
                var config = new JsonConfig()
                {
                    encoding = "UTF-8",
                    plugins = new string[] { "Java", "C++", "C#" },
                    indent = new Indent() { length = 4, use_space = false }
                };
    
    
                var serializer = new DataContractJsonSerializer(typeof(JsonConfig));
                var stream = new MemoryStream();
                serializer.WriteObject(stream, config);
    
                byte[] dataBytes = new byte[stream.Length];
    
                stream.Position = 0;
    
                stream.Read(dataBytes, 0, (int)stream.Length);
    
                dataString = Encoding.UTF8.GetString(dataBytes);
    
                Response.Write("JSON string is:");
                Response.Write(dataString);
            }
            /// <summary>
            /// JSON字符串转对象
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            protected void Button2_Click(object sender, EventArgs e)
            {
                var config = new JsonConfig()
                {
                    encoding = "UTF-8",
                    plugins = new string[] { "Java", "C++", "C#" },
                    indent = new Indent() { length = 4, use_space = false }
                };
    
    
                var serializer = new DataContractJsonSerializer(typeof(JsonConfig));
                var stream = new MemoryStream();
                serializer.WriteObject(stream, config);
    
                byte[] dataBytes = new byte[stream.Length];
    
                stream.Position = 0;
    
                stream.Read(dataBytes, 0, (int)stream.Length);
    
                dataString = Encoding.UTF8.GetString(dataBytes);
    
                //var serializer = new DataContractJsonSerializer(typeof(JsonConfig));
                var mStream = new MemoryStream(Encoding.Default.GetBytes(dataString));
                JsonConfig readConfig = (JsonConfig)serializer.ReadObject(mStream);
    
                Response.Write(string.Format("Encoding is: {0}", readConfig.encoding));
                foreach (string plugin in readConfig.plugins)
                {
                    Response.Write(string.Format("plugins is: {0}", plugin));
                }
                Response.Write(string.Format("indent.length is: {0}", readConfig.indent.length));
                Response.Write(string.Format("indent.use_space is: {0}", readConfig.indent.use_space));
            }
        }
    
        [DataContract(Name = "Customer", Namespace = "JsonNetDemo")]
        class JsonConfig
        {
            [DataMember(Order = 0)]
            public string encoding { get; set; }
            [DataMember(Order = 1)]
            public string[] plugins { get; set; }
            [DataMember(Order = 2)]
            public Indent indent { get; set; }
        }
    
        [DataContract(Name = "Customer", Namespace = "JsonNetDemo")]
        class Indent
        {
            [DataMember(Order = 0)]
            public int length { get; set; }
            [DataMember(Order = 1)]
            public bool use_space { get; set; }
        }
    }
    
  • 相关阅读:
    程序员达到高效率的一种境界 狼人:
    IBM夏然:软件产业对整个国家发展举足轻重 狼人:
    浅析Node.js:一个“编码就绪”服务器 狼人:
    eBay的Turmeric和VJet的源程序移到了GitHub上 狼人:
    程序员最常见的技术性误区 狼人:
    我不是一个工程师——我是一个软件开发者 狼人:
    【简讯】Adobe停止发布AIR for Linux版本 狼人:
    【赏析】15个非常棒的使用CSS3的设计组合 狼人:
    5款最好的免费Linux缓存系统 狼人:
    漫画:天堂里没有程序员! 狼人:
  • 原文地址:https://www.cnblogs.com/geovindu/p/3763516.html
Copyright © 2011-2022 走看看