RestSharp:如何跳过将空值序列化为JSON?

时间:2013-11-15 17:15:20

标签: json serialization restsharp

RestSharp的内置JSON序列化程序序列化了对象的所有属性,即使它们为null或者是默认值。如何让它跳过这些属性?

3 个答案:

答案 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)

以下是已修改为忽略空值的版本的链接。您只需要设置序列化程序选项以忽略空值。

Restsharp that ignores null values