在某些应用程序响应期间,我正在使用.NET Core 3.1。我正在对记录进行对象序列化。
object result = FromSomeCall();
Logger.DebugFormat("Final Response against {0}", JsonSerializer.Serialize(result.Value));
一个对象就像
{
"auth_req_id": ".....",
"expires_in": 1800,
"correlation_id": null,
"access_token": "..==",
"token_type": "Bearer",
"id_token": "....."
}
只有在序列化过程中存在某个我可以忽略的特定属性(在这里id_token
)的任何可能性
object result = FromSomeCall();
可以导致多种类型的对象。
答案 0 :(得分:0)
已经变通了,先将我的对象转换为动态对象,然后更改值(我也可以在此处删除)
private void LogWithExludedProperty(object value, string key)
{
dynamic copiedValue = value.ToDynamic();
if (copiedValue is ExpandoObject)
{
if (((IDictionary<string, dynamic>)copiedValue).ContainsKey(key))
{
((IDictionary<string, dynamic>)copiedValue)[key] = ".....";
}
}
Logger.DebugFormat("Final Response Token:{0}", JsonSerializer.Serialize(copiedValue));
}
使用以下扩展方法
public static dynamic ToDynamic(this object value)
{
IDictionary<string, object> expando = new ExpandoObject();
foreach (PropertyDescriptor property in TypeDescriptor.GetProperties(value.GetType()))
expando.Add(property.Name, property.GetValue(value));
return expando as ExpandoObject;
}