1

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代わりにそれらをオブジェクトに変換したいと思います。これらはエポックまでのミリ秒数として保存されているだけだと思いますが、これは簡単に変換できるはずですが、残りのフィールドを損なうことなく、これら2つの日付フィールドだけにカスタムデシリアライザーを実装するにはどうすればよいですか?自動的に?

4

1 に答える 1

4

ブックマーククラスにフィールドを追加する必要があります(ダニエルが言ったように)。フィールドはC#のシリアル化には影響しません。

例:

class Bookmark
{
    ...
    public DateTime ConvertedDateTime { get { return yourConversionMethod(dateAdded); } }
}
于 2012-08-12T14:11:31.010 に答える