c# Json 序列化后转化为对象类集合

来源:互联网 发布:虚拟商城软件下载 编辑:程序博客网 时间:2024/04/30 06:29
[WebMethod]
        public static string GetAllHints()
        {
            Dictionary<string, string> data = new Dictionary<string, string>();
            data.Add("苹果4代iphone正品", "21782");
            data.Add("苹果4代 手机套", "238061");
            data.Add("苹果4", "838360");
            data.Add("苹果皮", "242721");
            data.Add("苹果笔记本", "63348");
            data.Add("苹果4s", "24030");
            data.Add("戴尔笔记本", "110105");
            data.Add("戴尔手机", "18870");
            data.Add("戴尔键盘", "30367");
            //JSON序列化
            DataContractJsonSerializer serializer = new DataContractJsonSerializer(data.GetType());
            string dataString=string.Empty;
            //定义一个stream用来存放序列化之后的内容
            using (MemoryStream ms = new MemoryStream())
            {

                  serializer.WriteObject(ms, data);

                  //dataString为返回json 字符串  
                  //{"Key":"苹果4代iphone正品","Value":"21782"},{"Key":"苹果4代 手机套","Value":"238061"}

                  dataString = System.Text.Encoding.UTF8.GetString(ms.ToArray());
              
                  //从头到尾将stream读取成一个字符串形式的数据,并且返回
                  var memor = new MemoryStream(Encoding.UTF8.GetBytes(dataString));;
                  //将Json字符串反序列化成List对象类集合
                  DataContractJsonSerializer ser2 = new DataContractJsonSerializer(typeof(List<ConvetJson>));
                  List<ConvetJson> list = (List<ConvetJson>)ser2.ReadObject(memor);
                 //下面进行其他操作即可。
                //JsonList另外一种转化list方法可直接调用
            }
             return "";
        }
        /// <summary>
        /// 将JSON字符串反序列化为List对象
        /// </summary>
        public List<ConvetJson> JsonList(string jsonString)
        {
            MemoryStream stream = new MemoryStream();
            DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(List<ConvetJson>));
            StreamWriter wr = new StreamWriter(stream);
            wr.Write(jsonString);
            wr.Flush();
            stream.Position = 0;
            Object obj = ser.ReadObject(stream);
            List<ConvetJson> listJson = (List<ConvetJson>)obj;
            return listJson;
        }

        //要序列化的类
        [DataContract]
        public class ConvetJson
        {
            [DataMember]
            public string Key { get; set; }
            [DataMember]
            public string Value { get; set; }

        }


参考

www.rczjp.cn/ArticleShow.aspx?ID=717

http://www.techpot.net/archives/30308

http://www.cnblogs.com/coderzh/archive/2008/11/25/1340862.html

http://www.cnblogs.com/txw1958/archive/2012/08/01/csharp-json.html

原创粉丝点击