欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#中JavaScriptSerializer幫助類用法實例

 更新時間:2014年12月26日 14:54:23   投稿:shichen2014  
這篇文章主要介紹了C#中JavaScriptSerializer幫助類用法,實例分析了JavaScriptSerializer幫助類處理json字符串時的技巧,需要的朋友可以參考下

本文實例講述了C#中JavaScriptSerializer幫助類用法。分享給大家供大家參考。具體如下:

關(guān)鍵代碼如下:

復(fù)制代碼 代碼如下:
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
    }
}

測試代碼如下:
復(fù)制代碼 代碼如下:
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();
        }
    }
}

測試結(jié)果如下圖所示:

希望本文所述對大家的C#程序設(shè)計有所幫助。

相關(guān)文章

  • web打印 window.print()介紹

    web打印 window.print()介紹

    web打印 window.print()介紹,需要的朋友可以參考一下
    2013-05-05
  • C#實現(xiàn)壓縮pdf文件的示例代碼

    C#實現(xiàn)壓縮pdf文件的示例代碼

    PDF 文件如果文件太大則會影響傳輸效果同時也會占用過多磁盤空間,所以這篇文章主要為大家詳細介紹了如何使用C#實現(xiàn)有效地壓縮 PDF 文件,需要的可以參考下
    2023-11-11
  • 淺談c# 浮點數(shù)計算

    淺談c# 浮點數(shù)計算

    本文通過具體的示例給大家演示了下C#中浮點數(shù)運算所遇到的問題及解決方法,有需要的小伙伴可以參考下
    2017-09-09
  • C#數(shù)據(jù)類型實現(xiàn)背包、隊列和棧

    C#數(shù)據(jù)類型實現(xiàn)背包、隊列和棧

    本文詳細講解了C#數(shù)據(jù)結(jié)構(gòu)類型,并實現(xiàn)背包、隊列和棧的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • C#使用正則表達式實現(xiàn)首字母轉(zhuǎn)大寫的方法

    C#使用正則表達式實現(xiàn)首字母轉(zhuǎn)大寫的方法

    這篇文章主要介紹了C#使用正則表達式實現(xiàn)首字母轉(zhuǎn)大寫的方法,涉及C#基于正則表達式操作字符串的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-11-11
  • Unity PC版Log的具體位置介紹

    Unity PC版Log的具體位置介紹

    這篇文章主要介紹了Unity PC版Log的具體位置介紹,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • C# 并行和多線程編程——Task進階知識

    C# 并行和多線程編程——Task進階知識

    這篇文章主要介紹了C# 并行和多線程編程——Task進階知識的的相關(guān)資料,幫助大家更好的理解和學習使用c#,感興趣的朋友可以了解下
    2021-02-02
  • C#簡易人機對抗“石頭剪刀布”游戲的實現(xiàn)

    C#簡易人機對抗“石頭剪刀布”游戲的實現(xiàn)

    本文主要介紹了C#簡易人機對抗“石頭剪刀布”游戲的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-05-05
  • C#實現(xiàn)Excel轉(zhuǎn)PDF時設(shè)置內(nèi)容適應(yīng)頁面寬度

    C#實現(xiàn)Excel轉(zhuǎn)PDF時設(shè)置內(nèi)容適應(yīng)頁面寬度

    將Excel轉(zhuǎn)為PDF格式時,通常情況下轉(zhuǎn)換出來的PDF頁面都是默認的寬度大小。所以本文提供了C#實現(xiàn)Excel轉(zhuǎn)PDF時設(shè)置內(nèi)容適應(yīng)頁面寬度的示例代碼,需要的可以參考一下
    2022-04-04
  • C#實現(xiàn)順序棧和鏈棧的代碼實例

    C#實現(xiàn)順序棧和鏈棧的代碼實例

    今天小編就為大家分享一篇關(guān)于的C#實現(xiàn)順序棧和鏈棧的代碼實例,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-10-10

最新評論