如何使用NewtonSoft Json序列化FileInfo对象?

时间:2017-02-08 19:38:20

标签: c# serialization json.net

我想使用json序列化FileInfo对象。 到目前为止,我在使用JsonConvert.serializeOjbect()方法序列化文件信息对象时得到了以下结果。

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

当然,finfo比jsonString持有的两个属性拥有更多属性。 (ExistsDirectoryCreationTimeExtensionIsReadonlyLastAccessTime等属性。) jsonstring只保留其中两个属性。

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

有没有办法使用Json序列化整个对象而不是这两个属性?

1 个答案:

答案 0 :(得分:1)

您只看到这两个属性的原因是FileInfo实现了ISerializable接口,并且正在使用其GetObjectInfo方法来覆盖默认的序列化行为。如果您完全控制FileInfo类(您不会这样做),则可以应用[JsonObject]属性来强制执行正常的Json序列化行为。

我认为在这种情况下你唯一的选择就是编写自己的包装器,其中包含你想要的属性。您的属性可以直接调用基础FileInfo属性。