【发布时间】:2023-04-05 07:04:01
【问题描述】:
我正在将所有对我的 WCF Web 服务的请求(包括参数)记录到数据库中。我就是这样做的:
- 创建一个派生自 PostSharp 方面 OnMethodBoundaryAspect 的 WcfMethodEntry 类,
- 使用 WcfMethodEntry 属性注释所有 WCF 方法,
- 在 WcfMethodEntry 中,我使用 JsonConvert.SerializeObject 方法将方法参数序列化为 json 并将其保存到数据库中。
这没问题,但有时参数很大,例如一个自定义类,其中包含几个字节数组,包括照片、指纹等。我想从序列化中排除所有这些字节数组数据类型,什么是最好的方法?
序列化 json 示例:
[
{
"SaveCommand":{
"Id":5,
"PersonalData":{
"GenderId":2,
"NationalityCode":"DEU",
"FirstName":"John",
"LastName":"Doe",
},
"BiometricAttachments":[
{
"BiometricAttachmentTypeId":1,
"Parameters":null,
"Content":"large Base64 encoded string"
}
]
}
}
]
期望的输出:
[
{
"SaveCommand":{
"Id":5,
"PersonalData":{
"GenderId":2,
"NationalityCode":"DEU",
"FirstName":"John",
"LastName":"Doe",
},
"BiometricAttachments":[
{
"BiometricAttachmentTypeId":1,
"Parameters":null,
"Content":"..."
}
]
}
}
]
编辑:我不能更改用作 Web 服务方法参数的类 - 这也意味着我不能使用 JsonIgnore 属性。
【问题讨论】:
-
是否可以在序列化之前编辑你的 c# 对象?
-
@Alexander 嗯...我不知道,你的意思是我可以在反射的帮助下为对象添加 JsonIgnore 属性?或者只是清除这些属性?大概……
-
@sventevit -
[JsonIgnore]会解决它。 -
@sventevit 我考虑过财产清算,但 JsonIgnore 看起来是更好的解决方案 :)
标签: c# .net wcf json.net postsharp