如何为某些字段实现自定义反序列化?

时间:2012-08-12 00:52:49

标签: c# json serialization javascriptserializer

我正在尝试deserialize我的Firefox书签,所以我可以用它们做事。令人惊讶的是,这完美无缺:

class Bookmark
{
    public string title;
    public int? id;
    public int? parent;
    public string dateAdded;
    public string lastModified;
    public string type;
    public string root;
    public string uri;
    public List<Bookmark> children; 
}

class Program
{
    static void Main(string[] args)
    {
        var jss = new JavaScriptSerializer();
        var json = File.ReadAllText(@"T:\bookmarks-2012-08-08.json");
        var root = jss.Deserialize<Bookmark>(json);
    }
}

我可以检查“根”对象,一切都很好。但是,日期看起来像“1260492675000000”。我想将它们转换为DateTime个对象。我猜这些只是存储为epoch的毫秒数,should be easy enough to convert,但我如何为这两个日期字段实现一个自定义反序列化器,而不会影响其余的字段,这是我自动完成的?

1 个答案:

答案 0 :(得分:4)

您应该在Bookmark类中添加一个字段(就像Daniel所说的那样)。字段不会影响C#中的序列化。

示例:

class Bookmark
{
    ...
    public DateTime ConvertedDateTime { get { return yourConversionMethod(dateAdded); } }
}