Bry*_*yan 15 serialization json restsharp
RestSharp的内置JSON序列化程序序列化了对象的所有属性,即使它们为null或者是默认值.如何让它跳过这些属性?
小智 7
另一种方法是,您可以使用其他支持忽略空值的json库(json.net,servicestack.text等)来首先序列化它:
RestRequest request = new RestRequest();
...
string jsonString = ThirdPartySerialization(jsonObject);
request.AddParameter("application/json", jsonString, ParameterType.RequestBody);
Run Code Online (Sandbox Code Playgroud)
您可以将自定义项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;
}
}
Run Code Online (Sandbox Code Playgroud)
然后将其用作默认的序列化程序策略。
SimpleJson.SimpleJson.CurrentJsonSerializerStrategy = new IgnoreNullValuesJsonSerializerStrategy();
Run Code Online (Sandbox Code Playgroud)
以下是已修改为忽略空值的版本的链接。您只需将序列化器选项设置为忽略空值即可。
归档时间: |
|
查看次数: |
6446 次 |
最近记录: |