栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

是否为DateTime自定义JavaScriptConverter?

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

是否为DateTime自定义JavaScriptConverter?

JavascriptSerializer绝对可以满足您的需求。

通过创建自定义转换器并将其注册到序列化器中,可以针对任何类型来自定义JavascriptSerializer执行的序列化。如果您有一个名为Person的类,我们可以这样创建一个转换器:

public class Person{    public string Name { get; set; }    public DateTime Birthday { get; set; }}public class PersonConverter : JavascriptConverter{    private const string _dateFormat = "MM/dd/yyyy";    public override IEnumerable<Type> SupportedTypes    {        get        { return new[] { typeof(Person) };        }    }    public override object Deserialize(IDictionary<string, object> dictionary, Type type, JavascriptSerializer serializer)    {        Person p = new Person();        foreach (string key in dictionary.Keys)        { switch (key) {     case "Name":         p.Name = (string)dictionary[key];         break;     case "Birthday":         p.Birthday = DateTime.ParseExact(dictionary[key] as string, _dateFormat, DateTimeFormatInfo.InvariantInfo);         break; }        }        return p;    }    public override IDictionary<string, object> Serialize(object obj, JavascriptSerializer serializer)    {        Person p = (Person)obj;        IDictionary<string, object> serialized = new Dictionary<string, object>();        serialized["Name"] = p.Name;        serialized["Birthday"] = p.Birthday.ToString(_dateFormat);        return serialized;    }}

并像这样使用它:

JavascriptSerializer serializer = new JavascriptSerializer();serializer.RegisterConverters(new[] { new PersonConverter() });Person p = new Person {     Name = "User Name",     Birthday = DateTime.Now };string json = serializer.Serialize(p);Console.WriteLine(json);// {"Name":"User Name","Birthday":"12/20/2010"}Person fromJson = serializer.Deserialize<Person>(json);Console.WriteLine(String.Format("{0}, {1}", fromJson.Name, fromJson.Birthday)); // User Name, 12/20/2010 12:00:00 AM


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

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

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