2013-11-15 13 views

Antwort

1

Hier ist eine Verknüpfung zu einer Version, die geändert wurde, um Nullwerte zu ignorieren. Sie müssen nur die Serializer-Optionen so einstellen, dass Nullen ignoriert werden.

Restsharp that ignores null values

5

Eine Alternative können Sie andere json Bibliotheken (json.net, servicestack.text, etc.) verwendet werden, die Nullwerte ignorieren sie serialisiert werden zuerst:

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

Sie verwenden können eine benutzerdefinierte IJsonSerializerStrategy zusammen mit dem Standard SimpleJson JSON-Serializer, um Nullwerte zu ignorieren.

Der einfachste Weg, es zu tun ist, die PocoJsonSerializerStrategy wie unten zu erweitern.

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

Und dann verwenden Sie es als die Standard-Serializer-Strategie.

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

Danke dafür, aber derzeit nicht mit der aktuellen Version von RestSharp als mindestens 106.1.0, derzeit auf das Problem warten: https: // github. com/restasharp/RestSharp/issues/1018 Hoffentlich sobald das gelöst ist, wird dies wieder funktionieren oder zumindest etwas sehr ähnliches. –

+0

@ JamesEby das ist falsch. Diese Lösung funktioniert immer noch und hängt nicht mit dem von Ihnen erwähnten Problem zusammen. Die Lösung, die ich gepostet habe, konfiguriert die Serialisierungsstrategie direkt in der statischen SimpleJson-Klasse, die RestSharp verwendet, und ist daher von den begrenzten Konfigurationsoptionen in RestSharp nicht betroffen. Es wird auch in der offiziellen Dokumentation erwähnt, dass es möglich ist, die Serializer Strategie so gestalten (am Ende der Seite): https://github.com/restsharp/RestSharp/wiki/Deserialization – Conyc

+0

Was ich sage ist, Diese statische Klasse existiert im Code nicht mehr oder zumindest scheint sie entfernt worden zu sein. Ich konnte keine solche SimpleJson-Konfigurationsklasse in RestSharp ab der neuesten Version finden. Wenn ich falsch liege und Sie es immer noch sehen, lassen Sie es mich wissen. –

Verwandte Themen