我一直在阅读JSON.NET documentation on serialization,但我正在寻找的不是他们的。
我有一个应用程序通过网络发送描述业务交易和查询的消息(commands和queries)。这些消息以JSON格式发送,我们使用JSON.NET来序列化和反序列化这些对象。以下是此类对象的示例:
public UploadDocumentCommand
{
public Guid DocumentId;
public byte[] Data;
}
现在,在服务器上,我们只需将这些对象保存到数据库表中即可创建审计跟踪,并将表中的对象以JSON格式存储在表中。
虽然大多数对象只包含几个字节的数据,但是我们的一些对象包含大量数据,如前面的UploadDocumentCommand
示例中所示(用户将发送多个MB的文件和图像)命令)。虽然我们确实希望将这些特定命令存储在审计跟踪中,但我们需要防止实际数据被序列化并存储在我们的数据库中,因为我们将无法处理该大小的数据库。
通常,您可以通过使用[JsonIgnoreAttribute]
属性或[NonSerialized]
属性标记属性或字段来实现此目的,在我们的情况下,这将不起作用,因为这也会阻止数据从客户端发送到服务器,因为我们使用JSON作为从客户端到服务器的通信格式。
有没有办法以允许我们有条件地序列化它们的方式标记这些类成员?例如,JsonConvert.SerializeObject
中的(自定义)属性和自定义配置?