Wbudowany szeregowiec JSON RestSharp serializuje wszystkie właściwości obiektu, nawet jeśli są one wartością domyślną. Jak mogę go pomijać te właściwości?RestSharp: Jak pominąć szeregowanie wartości pustych w JSON?
Odpowiedz
Oto link do wersji, która została zmodyfikowana tak, aby ignorować wartości puste. Musisz tylko ustawić opcje serializera, aby ignorować wartości null.
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);
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();
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. –
@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
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ć. –
- 1. Czy NewtonSoft Json.NET może pominąć szeregowanie pustych list?
- 2. JacksonProviderProxy wypisywanie wartości pustych w wyjściu json
- 3. RestSharp dodaj obiekt JSON
- 4. Jak umieścić surowy Json w RestSharp?
- 5. Jak pominąć pustych zbiorów podczas szeregowania z Json.NET
- 6. Jak obsługiwać/null pustych wartości w JsonConvert.DeserializeObject
- 7. RestSharp deserializacji z JSON Array
- 8. Jak zdobyć serializator HttpClient Json do zignorowania wartości pustych
- 9. Zapisywanie/szeregowanie zapytania LINQ
- 10. Jak używać OAuth2 w RestSharp
- 11. Deserializowanie łańcucha json z newtonsoft lub restsharp
- 12. Json RestSharp dezynfekujący dane odpowiedzi null
- 13. Serializacja JSON - usuwanie pustych klawiszy
- 14. Jak uzyskać poprzednią wartość dla wartości pustych
- 15. Jak pominąć filtry dla żądań json/xml w szynach
- 16. Szeregowanie i deserializacja obiektów?
- 17. Jak poprosić BeanUtils o zignorowanie wartości pustych
- 18. Obsługa wartości pustych w programie Freemarker
- 19. Szeregowanie tablic wielowymiarowych na miejscu
- 20. RestSharp Accept zmiana nagłówka
- 21. golang json Marszałek: jak pominąć pusty zagnieżdżonych struktury
- 22. RestSharp nie deserializuje listy obiektów JSON, zawsze jest pusta
- 23. Przypisywanie pustej wartości do pól JSON zamiast pustych ciągów znaków w Golang
- 24. JsonSerializer - szeregowanie miejsc dziesiętnych z formatowaniem "N2"
- 25. Jak pominąć pierwszą iterację $ .each()?
- 26. Jak wykonać zapytanie o kolumnę json dla pustych obiektów?
- 27. Prześlij plik przez C# za pomocą żądania JSON i RestSharp
- 28. Get XPath(), aby powrócić pustych wartości
- 29. @transient szeregowanie pola Lazy Val
- 30. Jak wysłać żądanie POST w RestSharp?
Json.NET ma taki parametr. 'JsonSerializerSettings.NullValueHandling = NullValueHandling.Ignore' ... dunno na temat RestSharp – thenewseattle