RestSharp的内置JSON序列化程序序列化了对象的所有属性,即使它们为null或者是默认值。如何让它跳过这些属性?
答案 0 :(得分:7)
另一种方法是,您可以使用其他支持忽略空值的json库(json.net,servicestack.text等)来首先序列化它:
RestRequest request = new RestRequest();
...
string jsonString = ThirdPartySerialization(jsonObject);
request.AddParameter("application/json", jsonString, ParameterType.RequestBody);
答案 1 :(得分:5)
您可以将自定义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();
答案 2 :(得分:1)
以下是已修改为忽略空值的版本的链接。您只需要设置序列化程序选项以忽略空值。