2017-05-03 41 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);