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

5
我希望能够使用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序列化整个对象而不是这两个属性?

似乎与为什么使用Json.NET将DriveInfo的属性序列化为json字符串时会丢失属性?非常相似。同样的方法也应该适用。 - dbc
1个回答

5
你只看到这两个属性的原因是因为FileInfo实现了ISerializable接口,它的GetObjectInfo方法被用来覆盖默认的序列化行为。如果你完全控制FileInfo类(但事实上你没有),那么可以应用[JsonObject]属性来强制进行普通的Json序列化行为。
我认为在这种情况下,你唯一的选择是编写自己的包装器,其中包含你想要的属性。你的属性可以直接调用底层的FileInfo属性。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接