2013-11-15 12 views

Odpowiedz

5

Alternatywą, można korzystać z innych bibliotek json (json.net, servicestack.text, itd.), Które wspierają ignorując wartości null, aby je szeregować pierwszy:

RestRequest request = new RestRequest(); 
... 
string jsonString = ThirdPartySerialization(jsonObject); 
request.AddParameter("application/json", jsonString, ParameterType.RequestBody); 
3

Można użyć niestandardowy IJsonSerializerStrategy wraz z domyślnym serializatorem JSON SimpleJson do ignorowania wartości null.

Najprostszym sposobem na to jest rozszerzenie PocoJsonSerializerStrategy jak poniżej.

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; 
    } 
} 

Następnie użyj go jako domyślnej strategii serializera.

SimpleJson.SimpleJson.CurrentJsonSerializerStrategy = new IgnoreNullValuesJsonSerializerStrategy(); 
+0

Dziękuję za to, ale obecnie nie działa z aktualną wersją RestSharp co najmniej 106.1.0, obecnie czeka na wydanie: https: // github. com/restsharp/RestSharp/issues/1018 Mam nadzieję, że po rozwiązaniu będzie działać ponownie lub przynajmniej coś bardzo podobnego. –

+0

@JamesEby jest niepoprawny. To rozwiązanie nadal działa i nie jest związane z problemem, o którym wspomniałeś. Umieszczone przeze mnie rozwiązanie konfiguruje strategię serializera bezpośrednio w statycznej klasie SimpleJson, z której korzysta RestSharp, a zatem nie ma wpływu na ograniczone opcje konfiguracji w RestSharp. Jest nawet wspomniane w oficjalnej dokumentacji, że możliwe jest dostosowanie strategii serializatora w ten sposób (na dole tej strony): https://github.com/restsharp/RestSharp/wiki/Deserialization – Conyc

+0

To, co mówię, to ta klasa statyczna nie istnieje już w kodzie lub przynajmniej Wydawało się, że została usunięta. Nie mogłem znaleźć takiej klasy konfiguracji SimpleJson w RestSharp od najnowszej wersji. Jeśli się mylę i nadal go widzisz, daj mi znać. –

Powiązane problemy