Встроенный сериализатор JSON для RestSharp сериализует все свойства объекта, даже если они имеют значение null или иное значение по умолчанию. Как я могу пропустить эти свойства?
RestSharp: Как пропустить сериализацию нулевых значений в JSON?
Ответ 1
Альтернативно, вы можете использовать другие json-библиотеки (json.net, servicestack.text и т.д.), которые поддерживают игнорирование нулевых значений для его сериализации:
RestRequest request = new RestRequest();
...
string jsonString = ThirdPartySerialization(jsonObject);
request.AddParameter("application/json", jsonString, ParameterType.RequestBody);
Ответ 2
Вы можете использовать пользовательский 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();
Ответ 3
Вот ссылка на версию, которая была изменена для игнорирования нулевых значений. Вам просто нужно установить параметры serializer для игнорирования нулей.
Ответ 4
Вы можете использовать [JsonPropertyAttribute] для свойств, которые вы хотите, чтобы сериализатор генерировал нулевые значения для использования NullValueHandling, установленного в Игнорировать:
[JsonProperty("email", NullValueHandling = NullValueHandling.Ignore)]
public string Email { get; set; }