从JSon序列化中排除数据成员

时间:2017-05-04 15:06:49

标签: json docusignapi

这是Docusign Rest api。当我在EnvelopeDefinition上调用ToJson()时,它会返回正确的信息,但我希望它在将此文件写入日志文件时不会序列化base64数组。我尝试使用[JsonIgnore]指令,但这使得数组完全被序列化。我是否需要覆盖此类的Serialize方法或只是创建另一个方法,如ToJsonForLogging(),而不是序列化该数组?

1 个答案:

答案 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;
    }
}