这是Docusign Rest api。当我在EnvelopeDefinition上调用ToJson()时,它会返回正确的信息,但我希望它在将此文件写入日志文件时不会序列化base64数组。我尝试使用[JsonIgnore]指令,但这使得数组完全被序列化。我是否需要覆盖此类的Serialize方法或只是创建另一个方法,如ToJsonForLogging(),而不是序列化该数组?
答案 0 :(得分:2)
我创建了一个适合您的扩展方法。您可以在代码中调用此扩展方法,如下所示
string json = envelopeDefinition.ToJsonLog(logDocumentBase64:false)
我将DocumentBase64复制到一个临时List中,然后使用.ToJson()函数在没有documentBase64属性的情况下进行记录。
public static class EnvelopeDefinitionExtensions
{
public static string ToJsonLog(this EnvelopeDefinition envDefinition, bool logDocumentBase64 = true)
{
if (logDocumentBase64) return envDefinition.ToJson();
var tempDocumentBase64List = new List<string>();
foreach(var doc in envDefinition.Documents)
{
tempDocumentBase64List.Add(doc.DocumentBase64);
doc.DocumentBase64 = null;
}
string json = envDefinition.ToJson();
int i =0;
foreach(var doc in envDefinition.Documents)
{
doc.DocumentBase64 = tempDocumentBase64List[i];
i++;
}
return json;
}
}