2017-02-08 19 views
1

jsonを使用してFileInfoオブジェクトをシリアル化します。 これまでのところ、JsonConvert.serializeOjbect()メソッドを使用してファイル情報オブジェクトをシリアライズすると、結果が下になりました。もちろんNewtonSoft Jsonを使用してFileInfoオブジェクトをシリアライズする方法は?

FileInfo finfo = new FileInfo("drive:\\folderpath\\file.txt"); 
string jsonString = JsonConvert.SerializeObject(finfo); 

finfoはjsonStringによって保持されている2つのより多くのプロパティを保持します。 (ExistsDirectoryCreationTimeExtensionIsReadonlyLastAccessTime、などのようなプロパティ) jsonstringのみ、これらの特性の2成り立ちます。

jsonString = {{ 
    "OriginalPath": "drive:\\folderpath\\file.txt", 
    "FullPath": "drive:\\folderpath\\file.txt" 
}} 

代わりにJSONを使用して、これらの二つの特性の全体オブジェクトをシリアル化する方法はありますか? FileInfoISerializableインタフェースを実装し、そのGetObjectInfo方法は、デフォルトの直列化の動作を上書きするために使用されているので、あなただけのこれらの2つのプロパティを見ている

+0

[Json.NETを使用してjson文字列にシリアル化するとDriveInfoのプロパティが表示されないのはなぜですか?](https://stackoverflow.com/questions/37170011/why-are-driveinfos-properties-missing-when-serializing -Json-string-using-jso/37170886#37170886)。同じアプローチも有効です。 – dbc

答えて

1

理由があります。 FileInfoクラス(あなたはそうではない)を完全に制御できたら、[JsonObject]属性を適用して通常のJsonの直列化動作を強制することができます。

私はこの場合、あなたが望むプロパティを含む独自のラッパーを書くことができるあなたの唯一の選択肢だと思います。あなたのプロパティは、基になるFileInfoプロパティを直接呼び出すことができます。

関連する問題