本文实例讲述了C#中JavaScriptSerializer帮助类用法。分享给大家供大家参考。具体如下:
关键代码如下:
复制代码 代码如下:
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.Web.Script.Serialization;
namespace YanZhiwei.DotNet3._5.Utilities.Common
{
///
/// JavaScriptSerializer 帮助类
///
public static class ScriptSerializerHelper
{
#region 处理Json字符串的时间格式问题
///
/// 处理JsonString的时间格式问题
///eg:ScriptSerializerHelper.ParseJsonTime(@"[{'getTime':'\/Date(1419564257428)\/'}]", "yyyyMMdd hh:mm:ss");==>[{'getTime':'20141226 11:24:17'}]
///参考:http://www.cnphp6.com/archives/35773
///
/// Json字符串
/// 时间格式化类型
///处理好的Json字符串
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;
}
///
/// 处理JsonString的时间格式问题【时间格式:yyyy-MM-dd HH:mm:ss】
///参考:http://www.cnphp6.com/archives/35773
///
/// Json字符串
///处理好的Json字符串
public static string ParseJsonTime(this string jsonString)
{
return ParseJsonTime(jsonString, "yyyy-MM-dd HH:mm:ss");
}
#endregion
#region 利用JavaScriptSerializer将对象序列化成JSON
///
/// 利用JavaScriptSerializer将对象序列化成JSON字符串
///eg:ScriptSerializerHelper.Serialize(_personList);
///
///泛型
/// 对象集合
///json
public static string Serialize(this IEnumerable 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字符串反序列化
///
///利用JavaScriptSerializer将json字符串反序列化
///eg:List _result = (List)ScriptSerializerHelper.Deserialize(_jsonString);
///
///泛型
///
///IEnumerable
public static IEnumerable Deserialize(this string jsonString) where T : class
{
IEnumerable _list = null;
if (!string.IsNullOrEmpty(jsonString))
{
JavaScriptSerializer _serializerHelper = new JavaScriptSerializer();
_list = _serializerHelper.Deserialize>(jsonString);
}
return _list;
}
#endregion
}
}
using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.Web.Script.Serialization;
namespace YanZhiwei.DotNet3._5.Utilities.Common
{
///
/// JavaScriptSerializer 帮助类
///
public static class ScriptSerializerHelper
{
#region 处理Json字符串的时间格式问题
///
/// 处理JsonString的时间格式问题
///
///
///
/// Json字符串
/// 时间格式化类型
///
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;
}
///
/// 处理JsonString的时间格式问题【时间格式:yyyy-MM-dd HH:mm:ss】
///
///
/// Json字符串
///
public static string ParseJsonTime(this string jsonString)
{
return ParseJsonTime(jsonString, "yyyy-MM-dd HH:mm:ss");
}
#endregion
#region 利用JavaScriptSerializer将对象序列化成JSON
///
/// 利用JavaScriptSerializer将对象序列化成JSON字符串
///
///
///
/// 对象集合
///
public static string Serialize
{
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字符串反序列化
///
///利用JavaScriptSerializer将json字符串反序列化
///
///
///
///
///
public static IEnumerable
{
IEnumerable
if (!string.IsNullOrEmpty(jsonString))
{
JavaScriptSerializer _serializerHelper = new JavaScriptSerializer();
_list = _serializerHelper.Deserialize
}
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 _personList = new List();
_personList.Add(_personA);
_personList.Add(_personB);
string _actual = ScriptSerializerHelper.Serialize(_personList);
string _expect = "[{\"Name\":\"YanZhiweiA\",\"Age\":10,\"Address\":\"shanghaiA\"},{\"Name\":\"YanZhiweiB\",\"Age\":11,\"Address\":\"shanghaiB\"}]";
Assert.AreEqual(_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 _expected = new List();
_expected.Add(_personA);
_expected.Add(_personB);
string _jsonString = "[{'Name':'YanZhiweiA','Age':10,'Address':'shanghaiA'},{'Name':'YanZhiweiB','Age':11,'Address':'shanghaiB'}]";
List _result = (List)ScriptSerializerHelper.Deserialize(_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
{
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();
}
}
}
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
_personList.Add(_personA);
_personList.Add(_personB);
string _actual = ScriptSerializerHelper.Serialize
string _expect = "[{\"Name\":\"YanZhiweiA\",\"Age\":10,\"Address\":\"shanghaiA\"},{\"Name\":\"YanZhiweiB\",\"Age\":11,\"Address\":\"shanghaiB\"}]";
Assert.AreEqual
}
[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
_expected.Add(_personA);
_expected.Add(_personB);
string _jsonString = "[{'Name':'YanZhiweiA','Age':10,'Address':'shanghaiA'},{'Name':'YanZhiweiB','Age':11,'Address':'shanghaiB'}]";
List
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
{
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#程序设计有所帮助。