栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C# > C#教程

C#中JavaScriptSerializer帮助类用法实例

C#教程 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C#中JavaScriptSerializer帮助类用法实例

本文实例讲述了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 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();
        }
    }
}
测试结果如下图所示:

希望本文所述对大家的C#程序设计有所帮助。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/125781.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号