Il serializzatore JSON incorporato di RestSharp serializza tutte le proprietà di un oggetto, anche se sono nulle o comunque il valore predefinito. Come posso far saltare queste proprietà?RestSharp: come saltare la serializzazione di valori nulli su JSON?
risposta
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.
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);
È 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();
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. –
@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
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. –
- 1. DataContractJsonSerializer per saltare nodi con valori nulli
- 2. Come evitare la serializzazione dei valori nulli in HashMap?
- 3. JSON dovrebbe includere valori nulli
- 4. Come fare json.Net saltare la serializzazione di collezioni vuote
- 5. Serializzazione dell'elenco su JSON
- 6. JSON su Android - serializzazione
- 7. SQL "Join" su valori nulli
- 8. DjangoRestFramework - Omettere campi nulli durante la serializzazione di oggetti
- 9. RestSharp Pubblica JSON oggetto
- 10. @JsonInclude (Include.NON_NULL) non funzionante/Jackson serializzazione valori nulli
- 11. Come saltare la serializzazione del campo in marshalling JSON in DataSnap?
- 12. RestSharp deserializzazione con JSON Array
- 13. Come posso pubblicare Raw Json usando RestSharp?
- 14. Come si personalizza la serializzazione JSON?
- 15. come rimuovere $ id durante la serializzazione JSON
- 16. PHP merge array su valori nulli
- 17. Valori predefiniti per valori nulli
- 18. Aggiunta di valori nulli all'arrayist
- 19. ForeignKey non consente valori nulli
- 20. Serializzazione temporizzata degli oggetti C# su JSON
- 21. Come ottenere il serializzatore HttpClient Json per ignorare i valori nulli
- 22. Ottenere un OutOfMemoryException durante la serializzazione su JSON?
- 23. La serializzazione da Python a JSON non riesce su Decimale
- 24. Come localizzare quando serializzazione JSON?
- 25. C# - LINQToExcel - Valori nulli
- 26. Serializzare i valori NaN in JSON come valori nulli in JSON.NET
- 27. Newtonsoft Json.NET può saltare la serializzazione delle liste vuote?
- 28. Enum serializzazione JSON vs XML
- 29. Ignora nil proprietà durante la serializzazione JSON utilizzando RestKit
- 30. Come riutilizzare JSON/JAXB di Jersey per la serializzazione?
Json.NET ha un tale parametro. 'JsonSerializerSettings.NullValueHandling = NullValueHandling.Ignore' ... non so su RestSharp – thenewseattle