2017-05-04 5 views
1

これはDocusign Rest APIを使用しています。 EnvelopeDefinitionでToJson()を呼び出すと、正しい情報が返されますが、ログファイルに書き出すときにbase64配列をシリアル化しないようにしたいと思います。私は[JsonIgnore]ディレクティブを使用してみましたが、配列が完全にシリアル化されなくなりました。このクラスのSerializeメソッドをオーバーライドするか、ToJsonForLogging()などの別のメソッドを作成してその配列をシリアル化しないでください。JSonシリアル化からデータメンバーを除外します

答えて

2

私はあなたのために機能する拡張メソッドを作成しました。

string json = envelopeDefinition.ToJsonLog(logDocumentBase64:false) 

私は一時的なリストにDocumentBase64をコピーしてdocumentBase64プロパティなしでログインすること.ToJson()関数を使用していますが、次のようにあなたのコード内でこの拡張メソッドを呼び出すことができます。

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

送信するエンベロープ定義で作業しなくてもこれを行う方法はありますか?私たちは文書をバイナリに置き換えることができず、プレースホルダはDocusignに送られていた時代でした。私は、エンベロープ定義を別のエンベロープ定義にクローン化してクローンを変更できると思います。 –

関連する問題