DotNet的JSON序列化与反序列化-创新互联
JSON(JavaScript Object Notation)JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式。在现在的通信中,较多的采用JSON数据格式,JSON有两种表示结构,对象和数组,JSON 数据的书写格式是:名称/值对。
成都创新互联公司成都网站建设定制制作,是成都网站维护公司,为成都PE包装袋提供网站建设服务,有成熟的网站定制合作流程,提供网站定制设计服务:原型图制作、网站创意设计、前端HTML5制作、后台程序开发等。成都网站制作热线:18982081108在vs解决方案中以前采用xml树的形式,组织项目的结构。在新的.net core中,项目的解决方案采用json作为项目的结构说明。
在.net的前后台数据交互中,采用序列化对象为json,前端ajax接受传输数据,反序列化为对象,在页面对数据进行渲染。有关json的相关内容就不再赘述,在.net中序列化的类主要采用DataContractJsonSerializer类。
现在提供一个较为通用的json的序列化和反序列化的通用方法。
1.json的序列化:
////// 将对象序列化为JSON /// ///序列化的类型 /// 需要序列化的对象 ///序列化后的JSON public static string JsonSerializer(T t) { if (t == null) throw new ArgumentNullException("t"); string jsonString; try { var ser = new DataContractJsonSerializer(typeof(T)); var ms = new MemoryStream(); ser.WriteObject(ms, t); jsonString = Encoding.UTF8.GetString(ms.ToArray()); ms.Close(); //替换Json的Date字符串 const string p = @"\\/Date\((\d+)\+\d+\)\\/"; var matchEvaluator = new MatchEvaluator(ConvertJsonDateToDateString); var reg = new System.Text.RegularExpressions.Regex(p); jsonString = reg.Replace(jsonString, matchEvaluator); } catch (Exception er) { throw new Exception(er.Message); } return jsonString; }
2.json的反序列化:
////// 将JSON反序列化为对象 /// public static T JsonDeserialize(string jsonString) { if (string.IsNullOrEmpty(jsonString)) throw new Exception(jsonString); //将"yyyy-MM-dd HH:mm:ss"格式的字符串转为"\/Date(1294499956278+0800)\/"格式 const string p = @"\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}"; try { var matchEvaluator = new MatchEvaluator(ConvertDateStringToJsonDate); var reg = new System.Text.RegularExpressions.Regex(p); jsonString = reg.Replace(jsonString, matchEvaluator); var ser = new DataContractJsonSerializer(typeof(T)); var ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString)); var obj = (T)ser.ReadObject(ms); return obj; } catch (Exception ex) { throw new Exception(ex.Message, ex); } }
以上是一个较为简单的json序列化和反序列化方法。
创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。
分享名称:DotNet的JSON序列化与反序列化-创新互联
标题来源:http://azwzsj.com/article/dgihph.html