2012-10-15 10 views
5

Wir verwenden derzeit den folgenden Konstruktor.Kein Json.net-Konstruktor mit Einstellungen und Konverterparametern

Das Problem, dem wir gegenüberstehen, ist, dass der JSON manchmal in einer anderen Reihenfolge serialisiert wird. Dies verursacht ein Problem mit unseren Tests und der Hash-Überprüfung, die wir durchführen. Ich ein Beispiel gefunden, die die Eigenschaften unter Verwendung von Kundeneinstellungen bestellen können

public class OrderedContractResolver : DefaultContractResolver 
{ 
    protected override System.Collections.Generic.IList<JsonProperty> CreateProperties(System.Type type, MemberSerialization memberSerialization) 
    { 
     return base.CreateProperties(type, memberSerialization).OrderBy(p => p.PropertyName).ToList(); 
    } 
} 

Sie normalerweise diese verwenden, indem ein JsonSerializationSettings Objekt initialisiert und in den Konstruktor wie

var settings = new JsonSerializerSettings() 
{ 
    ContractResolver = new OrderedContractResolver() 
}; 

var json = JsonConvert.SerializeObject(obj, Formatting.Indented, settings); 

das Problem mit diesem Pass ist ich kann Es wird keine Überladung für den Konstruktor angezeigt, der einen Konverter und einen Settings-Parameter verwendet, irgendwelche Ideen, wie ich beide verwenden kann?

Antwort

10

Gefunden, es gibt eine Konvertierungseigenschaft auf dem Einstellungsobjekt.

var settings = new JsonSerializerSettings() 
{ 
    ContractResolver = new OrderedContractResolver() 
}; 
settings.Converters.Add(new IsoDateTimeConverter()); 

var text = JsonConvert.SerializeObject(message, Formatting.Indented, settings); 
+0

Markiere es als akzeptiert, es hat mir auch geholfen :) –

Verwandte Themen