RestSharpに組み込まれているJSONシリアライザは、オブジェクトのプロパティがnullの場合でも、デフォルト値の場合でも、すべてのオブジェクトのプロパティをシリアル化します。これらのプロパティをスキップするにはどうすればよいですか?RestSharp:null値をJSONにシリアル化することをスキップする方法は?
答えて
null値を無視するように変更されたバージョンへのリンクです。ヌルを無視するシリアライザオプションを設定するだけで済みます。
代わり、あなたが最初にそれをシリアル化するためにnull値を無視してサポートする他のJSONライブラリ(json.net、servicestack.textなど)を使用することができます。
RestRequest request = new RestRequest();
...
string jsonString = ThirdPartySerialization(jsonObject);
request.AddParameter("application/json", jsonString, ParameterType.RequestBody);
は、あなたが使用することができますカスタム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();
ありがとうございます。ありがとうございますが、現時点ではRestSharpの現在のバージョンで少なくとも106.1.0、現在問題を待っていません: https:// github。 com/restsharp/RestSharp/issues/1018 これが解決したらうまくいけばうまくいけばうまくいけばうまくいけばうまくいけば、これはもう一度や少なくとも非常に似たようなものだろう。 –
@JamesEbyこれは間違っています。この解決策はまだ機能し、あなたが言及した問題とは関係ありません。 私が投稿したソリューションは、RestSharpが使用する静的SimpleJsonクラスにシリアライザ戦略を直接設定するため、RestSharpの限られた設定オプションの影響を受けません。 公式文書では、このようなシリアライザの戦略をこのページの下にカスタマイズすることもできます(https://github.com/restsharp/RestSharp/wiki/Deserialization – Conyc
)。静的クラスがコードにもう存在しないか、少なくとも削除されたようです。最新のバージョンでRestSharpにこのようなSimpleJson設定クラスは見つかりませんでした。私が間違っていてまだ見ているなら、私に知らせてください。 –
- 1. JSON値としてプロパティをシリアル化/逆シリアル化する
- 2. Json VB.NETをシリアル化する方法
- 3. 小数点以下をJSONにシリアル化する方法は?
- 4. jsonの文字列をドメインオブジェクトに逆シリアル化する方法は?
- 5. JSON文字列を.NETオブジェクトに逆シリアル化する方法は?
- 6. 正しいJson逆シリアル化をJavaオブジェクトにする方法は?
- 7. MonodroidのSystem.JsonでオブジェクトをJSONにシリアル化する方法は?
- 8. C++クラスをjsonにシリアル化してjsonファイルを解析する方法は?
- 9. ColorプロパティをARGB値としてシリアル化する方法は?
- 10. raw jsonフィールドをシリアル化する方法は?
- 11. JSONデータを逆シリアル化する方法は?
- 12. JSON配列を逆シリアル化する方法は?
- 13. エンティティからjsonにシリアル化する方法は?
- 14. JSONのシリアル化時にローカライズする方法は?
- 15. jsonオブジェクトを特定のサブクラスに逆シリアル化する方法
- 16. Rails 3.1のシリアル化をスキップする方法はありますか?
- 17. redisノードライブラリリスト値のjsonシリアル化
- 18. RestKitを使用してマルチレベルJSONをシリアル化する方法
- 19. ScalaとPlay Frameworkを使用してJsonのシリアル化をカスタマイズする方法は?
- 20. JSONをLINQオブジェクトに逆シリアル化する
- 21. JSONをオブジェクトに逆シリアル化する
- 22. JSONをJava enumに逆シリアル化する
- 23. JSONオブジェクトをC#で特定の深度にシリアル化または逆シリアル化する方法は?
- 24. JSONを逆シリアル化する - ルート要素を無視する方法は?
- 25. グラフをシリアル化する方法は?
- 26. pysparkパイプラインオブジェクトをシリアル化する方法は?
- 27. NodeSeqをシリアル化する方法は?
- 28. jacksonを使用してjsonリストをPOJOにシリアル化する方法は?
- 29. Json .NETシリアル化 - プロパティ値を変更
- 30. DataSnapのJSONマーシャリングでフィールドシリアル化をスキップする方法はありますか?
Json.NETにはこのようなパラメータがあります。 'JsonSerializerSettings.NullValueHandling = NullValueHandling.Ignore' ... RestSharpについてはおしまい – thenewseattle