2013-11-15 5 views
12

RestSharpに組み込まれているJSONシリアライザは、オブジェクトのプロパティがnullの場合でも、デフォルト値の場合でも、すべてのオブジェクトのプロパティをシリアル化します。これらのプロパティをスキップするにはどうすればよいですか?RestSharp:null値をJSONにシリアル化することをスキップする方法は?

+1

Json.NETにはこのようなパラメータがあります。 'JsonSerializerSettings.NullValueHandling = NullValueHandling.Ignore' ... RestSharpについてはおしまい – thenewseattle

答えて

1

null値を無視するように変更されたバージョンへのリンクです。ヌルを無視するシリアライザオプションを設定するだけで済みます。

Restsharp that ignores null values

5

代わり、あなたが最初にそれをシリアル化するためにnull値を無視してサポートする他のJSONライブラリ(json.net、servicestack.textなど)を使用することができます。

RestRequest request = new RestRequest(); 
... 
string jsonString = ThirdPartySerialization(jsonObject); 
request.AddParameter("application/json", jsonString, ParameterType.RequestBody); 
3

は、あなたが使用することができますカスタムIJsonSerializerStrategyとヌル値を無視するデフォルトのSimpleJson JSONシリアライザがあります。

これを行う最も簡単な方法は、以下のようにPocoJsonSerializerStrategyを拡張することです。

public class IgnoreNullValuesJsonSerializerStrategy : SimpleJson.PocoJsonSerializerStrategy 
{ 
    protected override bool TrySerializeUnknownTypes(object input, out object output) 
    { 
     bool returnValue = base.TrySerializeUnknownTypes(input, out output); 

     if (output is IDictionary<string, object> obj) 
     { 
      output = obj.Where(o => o.Value != null).ToDictionary(o => o.Key, o => o.Value); 
     } 

     return returnValue; 
    } 
} 

これをデフォルトのシリアライザ戦略として使用します。

SimpleJson.SimpleJson.CurrentJsonSerializerStrategy = new IgnoreNullValuesJsonSerializerStrategy(); 
+0

ありがとうございます。ありがとうございますが、現時点ではRestSharpの現在のバージョンで少なくとも106.1.0、現在問題を待っていません: https:// github。 com/restsharp/RestSharp/issues/1018 これが解決したらうまくいけばうまくいけばうまくいけばうまくいけばうまくいけば、これはもう一度や少なくとも非常に似たようなものだろう。 –

+0

@JamesEbyこれは間違っています。この解決策はまだ機能し、あなたが言及した問題とは関係ありません。 私が投稿したソリューションは、RestSharpが使用する静的SimpleJsonクラスにシリアライザ戦略を直接設定するため、RestSharpの限られた設定オプションの影響を受けません。 公式文書では、このようなシリアライザの戦略をこのページの下にカスタマイズすることもできます(https://github.com/restsharp/RestSharp/wiki/Deserialization – Conyc

+0

)。静的クラスがコードにもう存在しないか、少なくとも削除されたようです。最新のバージョンでRestSharpにこのようなSimpleJson設定クラスは見つかりませんでした。私が間違っていてまだ見ているなら、私に知らせてください。 –

関連する問題