2017-05-03 3 views
0

Ich öffnete ein Ticket here aber hoffe, dass jemand ziemlich einfach antworten kann.C# Serialisierungsfehler von JObject zu YamlDotNet

YamlDotNet unterstützt ISerializable nicht, Json.Net jedoch. Als Workaround versuchen wir daher, unser Objekt zuerst zu JObject zu serialisieren, was unsere Serialisierungseinstellungen berücksichtigt und nur die entsprechenden Eigenschaften serialisiert. Dann wollen wir unsere JObject zum YamlSerializer schicken, aber wir bekommen diese Fehler:

„Objekt nicht Zieltyp überein“ kann

+0

Sie könnten versuchen, rekursiv die 'JObject' zu einem' Dictionary Umwandlung 'zuerst. Die oben gewählte Antwort zu [Wie verwende ich JSON.NET zum Deserialisieren in verschachteltes/rekursives Wörterbuch und Liste?] (Https://stackoverflow.com/a/19140420/3744182) zeigt eine Möglichkeit, dies zu tun. – dbc

+0

Danke für den Vorschlag. Die Konvertierung in JObject ist schmerzhaft genug, aber dann, um es wieder in etwas anderes umzuwandeln, nur um es vielleicht in YAML zu bekommen, scheint ... unhaltbar. – solvingJ

Antwort

0

Vorschlag gemäß folgenden Posten als Abhilfe verwendet werden: How to convert JSON to YAML using YamlDotNet

IE konvertieren Sie JSON zu YAML mit dynamischen Expando-Objekt.

Beispiel:

var expConverter = new ExpandoObjectConverter(); 
var jsonString = JsonConvert.SerializeObject(anyObject); 
var expandoObject = JsonConvert.DeserializeObject<ExpandoObject>(jsonString, expConverter); 
var textInYamlFormat = serializer.Serialize(expandoObject);