设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 2805|回复: 1
打印 上一主题 下一主题

【原创】关于:JSON数据反序列化(待补充)

[复制链接]
跳转到指定楼层
1#
发表于 2014-2-23 10:23:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

有朋友问起,暂记一下,有空好好补充

有好多方法,如果是C#3.0,建议采用内置的方案:

举一个开心网的例子:


  • //--------json/test/userdata-------  
  • string strUserData = ContentHelper.GetMidString(parkingHTML, "v_userdata = ", ";");  
  • jsr = new DataContractJsonSerializer(typeof(UserData));  
  • ms = new MemoryStream(Encoding.UTF8.GetBytes(strUserData));  
  • UserData userData = (UserData)jsr.ReadObject(ms);  
  •     [DataContract]  
  •     public class Config  
  •     {  
  •         [DataMember(Name = "money_minute")]  
  •         public string money_minute { get; set; }  
  •         [DataMember(Name = "money_max")]  
  •         public string money_max { get; set; }  
  •     }  
  •      
  •     //vuid  
  •     //uid  
  •     //neighbor  
  •     //isfriend  
  •     //first_fee_parking  
  •     //first_free_parking  
  •     //real_name  
  •     //ta  
  •     //logo50  
  •     //logo20  
  •     //avenue  
  •     //cash  
  •     //scene  
  •     //sceneid  
  •     //showmoneyminute  
  •     //online2  
  •     [DataContract]  
  •     public class User  
  •     {  
  •         [DataMember(Name = "vuid")]  
  •         public string vuid { get; set; }  
  •         [DataMember(Name = "uid")]  
  •         public string uid { get; set; }  
  •         [DataMember(Name = "neighbor")]  
  •         public string neighbor { get; set; }  
  •         [DataMember(Name = "isfriend")]  
  •         public string isfriend { get; set; }  
  •         [DataMember(Name = "first_fee_parking")]  
  •         public string first_fee_parking { get; set; }  
  •         [DataMember(Name = "first_free_parking")]  
  •         public string first_free_parking { get; set; }  
  •         [DataMember(Name = "real_name")]  
  •         public string real_name { get; set; }  
  •         [DataMember(Name = "ta")]  
  •         public string ta { get; set; }  
  •         [DataMember(Name = "logo50")]  
  •         public string logo50 { get; set; }  
  •         [DataMember(Name = "logo20")]  
  •         public string logo20 { get; set; }  
  •         [DataMember(Name = "avenue")]  
  •         public string avenue { get; set; }  
  •         [DataMember(Name = "cash")]  
  •         public string cash { get; set; }  
  •         [DataMember(Name = "scene")]  
  •         public string scene { get; set; }  
  •         [DataMember(Name = "sceneid")]  
  •         public string sceneid { get; set; }  
  •         [DataMember(Name = "showmoneyminute")]  
  •         public string showmoneyminute { get; set; }  
  •         [DataMember(Name = "online2")]  
  •         public string online2 { get; set; }  
  •     }   





分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
 楼主| 发表于 2014-2-23 10:23:30 | 只看该作者
通过JSON序列化深度克隆类型
  • //空接口  
  • public interface IJson  
  • {  
  • }  
  •   
  • public static class JsonHelper  
  • {  
  •     public static string ToJson(this IJson source)  
  •     {  
  •         return ToJson(source, source.GetType());  
  •     }  
  •   
  •     public static string ToJson(this IJson source, Type type)  
  •     {  
  •         DataContractJsonSerializer serilializer = new DataContractJsonSerializer(type);  
  •         using (Stream stream = new MemoryStream())  
  •         {  
  •             serilializer.WriteObject(stream, source);  
  •             stream.Flush();  
  •             stream.Position = 0;  
  •             StreamReader reader = new StreamReader(stream);  
  •             return reader.ReadToEnd();  
  •         }  
  •     }  
  •   
  •     public static T ParseJSON<T>(this string str)  
  •     {  
  •         using (MemoryStream ms = new MemoryStream(Encoding.Unicode.GetBytes(str)))  
  •         {  
  •             DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));  
  •             return (T)serializer.ReadObject(ms);  
  •         }  
  •     }  
  •   
  •     // 通过JSON序列化深度克隆类型  
  •     public static T DeepClone<T>(this IJson Source) where T : IJson  
  •     {  
  •         string jsonString = Source.ToJson();  
  •         return jsonString.ParseJSON<T>();  
  •     }  
  • }  



您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-7 22:21 , Processed in 0.088933 second(s), 25 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表