2013-11-15 12 views

risposta

1

Ecco un collegamento a una versione che è stata modificata per ignorare valori nulli. Hai solo bisogno di impostare le opzioni del serializzatore per ignorare i null.

Restsharp that ignores null values

5

In alternativa, è possibile utilizzare altre librerie JSON (json.net, servicestack.text, etc.) che supportano ignorare i valori nulli di serializzare in primo luogo:

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

È possibile utilizzare una personalizzata IJsonSerializerStrategy insieme al serializzatore JSON predefinito SimpleJson per ignorare i valori nulli.

Il modo più semplice per farlo è estendere lo PocoJsonSerializerStrategy come di seguito.

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

E quindi utilizzarlo come strategia di serializzazione predefinita.

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

Grazie per questo, ma attualmente non funziona con la versione corrente di RestSharp almeno di 106.1.0, attualmente in attesa di rilascio: https: // github. com/restsharp/RestSharp/issues/1018 Speriamo che una volta risolto questo funzionerà di nuovo o almeno qualcosa di molto simile. –

+0

@JamesEby che non è corretto. Questa soluzione funziona ancora e non è correlata al problema che hai menzionato. La soluzione che ho postato configura la strategia serializzatore direttamente sulla classe statica SimpleJson utilizzata da RestSharp e non è quindi influenzata dalle opzioni di configurazione limitate in RestSharp. Nella documentazione ufficiale è persino menzionato che è possibile personalizzare la strategia di serializzazione come questa (in fondo a questa pagina): https://github.com/restsharp/RestSharp/wiki/Deserialization – Conyc

+0

Quello che sto dicendo è quella classe statica non esiste più nel codice, o almeno sembra essere stata rimossa. Non ho trovato alcuna classe di configurazione SimpleJson simile in RestSharp a partire dall'ultima versione. Se sbaglio e lo vedi ancora per favore fammi sapere. –

Problemi correlati