本文实例讲述了C#中JavaScriptSerializer帮助类用法。分享给大家供大家参考。具体如下:
关键代码如下:
using System; using System.Collections.Generic; using System.Text.RegularExpressions; using System.Web.Script.Serialization; namespace YanZhiwei.DotNet3._5.Utilities.Common { /// <summary> /// JavaScriptSerializer 帮助类 /// </summary> public static class ScriptSerializerHelper { #region 处理Json字符串的时间格式问题 /// <summary> /// 处理JsonString的时间格式问题 /// <para>eg:ScriptSerializerHelper.ParseJsonTime(@"[{'getTime':'\/Date(1419564257428)\/'}]", "yyyyMMdd hh:mm:ss");==>[{'getTime':'20141226 11:24:17'}]</para> /// <para>参考:http://www.cnphp6.com/archives/35773 </para> /// </summary> /// <param name="jsonString">Json字符串</param> /// <param name="formart">时间格式化类型</param> /// <returns>处理好的Json字符串</returns> public static string ParseJsonTime(this string jsonString, string formart) { if (!string.IsNullOrEmpty(jsonString)) { jsonString = Regex.Replace(jsonString, @"\\/Date\((\d+)\)\\/", match => { DateTime _dateTime = new DateTime(1970, 1, 1); _dateTime = _dateTime.AddMilliseconds(long.Parse(match.Groups[1].Value)); _dateTime = _dateTime.ToLocalTime(); return _dateTime.ToString(formart); }); } return jsonString; } /// <summary> /// 处理JsonString的时间格式问题【时间格式:yyyy-MM-dd HH:mm:ss】 /// <para>参考:http://www.cnphp6.com/archives/35773 </para> /// </summary> /// <param name="jsonString">Json字符串</param> /// <returns>处理好的Json字符串</returns> public static string ParseJsonTime(this string jsonString) { return ParseJsonTime(jsonString, "yyyy-MM-dd HH:mm:ss"); } #endregion #region 利用JavaScriptSerializer将对象序列化成JSON /// <summary> /// 利用JavaScriptSerializer将对象序列化成JSON字符串 /// <para>eg:ScriptSerializerHelper.Serialize<Person>(_personList);</para> /// </summary> /// <typeparam name="T">泛型</typeparam> /// <param name="entityList">对象集合</param> /// <returns>json</returns> public static string Serialize<T>(this IEnumerable<T> entityList) where T : class { string _jsonString = string.Empty; if (entityList != null) { JavaScriptSerializer _serializerHelper = new JavaScriptSerializer(); _serializerHelper.MaxJsonLength = int.MaxValue; _jsonString = _serializerHelper.Serialize(entityList); } return _jsonString; } #endregion #region 利用JavaScriptSerializer将json字符串反序列化 /// <summary> ///利用JavaScriptSerializer将json字符串反序列化 /// <para>eg:List<Person> _result = (List<Person>)ScriptSerializerHelper.Deserialize<Person>(_jsonString);</para> /// </summary> /// <typeparam name="T">泛型</typeparam> /// <param name="jsonString"></param> /// <returns>IEnumerable</returns> public static IEnumerable<T> Deserialize<T>(this string jsonString) where T : class { IEnumerable<T> _list = null; if (!string.IsNullOrEmpty(jsonString)) { JavaScriptSerializer _serializerHelper = new JavaScriptSerializer(); _list = _serializerHelper.Deserialize<IEnumerable<T>>(jsonString); } return _list; } #endregion } }
using Microsoft.VisualStudio.TestTools.UnitTesting; using System.Collections; using System.Collections.Generic; using System.Linq; using YanZhiwei.DotNet3._5.UtilitiesTests.Model; namespace YanZhiwei.DotNet3._5.Utilities.Common.Tests { [TestClass()] public class ScriptSerializerHelperTests { [TestMethod()] public void SerializeTest() { Person _personA = new Person() { Name = "YanZhiweiA", Age = 10, Address = "shanghaiA" }; Person _personB = new Person() { Name = "YanZhiweiB", Age = 11, Address = "shanghaiB" }; IList<Person> _personList = new List<Person>(); _personList.Add(_personA); _personList.Add(_personB); string _actual = ScriptSerializerHelper.Serialize<Person>(_personList); string _expect = "[{\"Name\":\"YanZhiweiA\",\"Age\":10,\"Address\":\"shanghaiA\"},{\"Name\":\"YanZhiweiB\",\"Age\":11,\"Address\":\"shanghaiB\"}]"; Assert.AreEqual<string>(_expect, _actual); } [TestMethod()] public void DeserializeTest() { Person _personA = new Person() { Name = "YanZhiweiA", Age = 10, Address = "shanghaiA" }; Person _personB = new Person() { Name = "YanZhiweiB", Age = 11, Address = "shanghaiB" }; List<Person> _expected = new List<Person>(); _expected.Add(_personA); _expected.Add(_personB); string _jsonString = "[{'Name':'YanZhiweiA','Age':10,'Address':'shanghaiA'},{'Name':'YanZhiweiB','Age':11,'Address':'shanghaiB'}]"; List<Person> _result = (List<Person>)ScriptSerializerHelper.Deserialize<Person>(_jsonString); bool _actual = _expected.SequenceEqual(_result, new PersonCompare()); Assert.IsTrue(_actual); } [TestMethod()] public void ParseJsonTimeTest() { string _actual = ScriptSerializerHelper.ParseJsonTime(@"[{'getTime':'\/Date(1419564257428)\/'}]", "yyyyMMdd hh:mm:ss"); Assert.AreEqual("[{'getTime':'20141226 11:24:17'}]", _actual); } } public class PersonCompare : IEqualityComparer<Person> { public bool Equals(Person x, Person y) { return (x.Age == y.Age) && (x.Address == y.Address) && (x.Name == y.Name); } public int GetHashCode(Person obj) { return obj.Name.GetHashCode(); } } }
希望本文所述对大家的C#程序设计有所帮助。
本文向大家介绍winforms 使用帮助类显示帮助,包括了winforms 使用帮助类显示帮助的使用技巧和注意事项,需要的朋友参考一下
我目前正在做一个项目,我们必须从UML图制作代码。我了解UML类图的解剖结构,但我无法理解什么
mongols 是一个高性能 C++ 网络库,提供基于 TCP/UDP/HTTP/WebSocket/RESP 等协议为基础的多种服务商基础设施。
问题内容: 我正在使用VS2008Express在NET3.5SP1中构建winForms应用程序。我正在尝试使用System.Web.Script.Serialization库反序列化对象。 错误是:数组反序列化不支持类型’jsonWinForm.Category’。 干杯! 问题答案: 很高兴您发现自己的错误。如果您正在寻找用于JSON序列化的其他工具,则可能需要尝试JSON.Net。
任何一个 web 应用程序会生成很多 HTMl 超文本标记。如果超文本标记是静态的, 那么将 PHP 和 HTML 混合在一个文件里 这种做法是非常高效的。但是,如果这些超文本标记是动态生成的,那么如果没有额外的辅助工具,这个过程将会变得复杂。 Yii 通过 HTML 帮助类来提供生成超文本标记的方法。这个帮助类包含有一系列的用于处理通用的 HTML 标签和其属性以及内容的静态方法。 注意: 如果
我仍然是Java的新手,我正在努力使这个程序适合我的任务。 问题是: 杰夫在你家附近经营着一家当地的零售店。他已与您签订合同,让您创建一个交互式应用程序,以帮助他增加员工工资。创建一个名为 Details 的类,该类将包含员工 ID 号、名字、姓氏和薪水的获取和设置方法。包括一个名为getUpdateSalary()的方法,该方法将使员工的薪水增加10%。在您的主类中,包括一个名为 () 的静态方