2017-05-04 81 views
1

這是Docusign Rest api。當我在EnvelopeDefinition上調用ToJson()時,它會返回正確的信息,但我希望它不會序列化base64陣列,因爲我將它寫入日誌文件。我嘗試過使用[JsonIgnore]指令,但是這完全阻止了數組被序列化。我是否需要重寫此類上的Serialize方法或僅創建另一個方法,如ToJsonForLogging(),而不是序列化該數組?從JSon序列化中排除數據成員

回答

2

我已經創建了一個適用於您的擴展方法。你可以在你的代碼如下

string json = envelopeDefinition.ToJsonLog(logDocumentBase64:false) 

我複製DocumentBase64到一個臨時目錄,然後使用.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; 
    } 
} 
+0

像冠軍一樣工作。非常感謝。 –

+0

糟糕。忘了這麼做。我非常感謝你的幫助。 –

+0

有沒有辦法做到這一點,而不用處理你將發出的信封定義?我們曾經有時間替換文檔bytearray不起作用,佔位符是發送到Docusign的內容。我想信封定義可以克隆到另一個信封定義並修改克隆。 –