2017-05-03 92 views
0

我打開了一張票here但我希望有人能夠相當簡單地回答。JObject到YamlDotNet的C#序列化錯誤

YamlDotNet不支持ISerializable,但Json.Net。所以,作爲一種解決方法,我們試圖首先將我們的對象序列化到JObject,這尊重了我們的序列化設置,並且只序列化適當的屬性。然後,我們希望我們的JObject發送到YamlSerializer,但我們得到這個錯誤:

「對象不匹配目標類型」

+0

可能嘗試遞歸轉換'JObject'到'詞典<串,對象>'第一。 [如何使用JSON.NET反序列化爲嵌套/遞歸字典和列表?](https://stackoverflow.com/a/19140420/3744182)的頂級投票答案顯示了一種方法。 – dbc

+0

感謝您的建議。轉換成JObject已經夠痛苦了,但是再把它轉換成別的東西,也許只是爲了讓它進入YAML似乎......站不住腳。 – solvingJ

回答

0

建議按照以下後可作爲解決方法: How to convert JSON to YAML using YamlDotNet

即 使用動態Expando對象將JSON轉換爲YAML。

實施例:

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