0

所以我制作了一个自定义的 JsonConverter,它似乎可以完美地序列化一个对象并反序列化它。

具体来说,我正在通过 NReco.VideoInfo 序列化 FFProbe 输出:

public class NMediaInfoConverter : JsonConverter
{  
     public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
    { 
        var n = ((MediaInfo) value).Result.CreateNavigator();
        n.MoveToRoot();
        var xDoc = new XmlDocument();
        xDoc.Load(n.ReadSubtree());

        writer.WriteRaw(JsonConvert.SerializeXmlNode(xDoc, serializer.Formatting)); 
    }

如果我这样序列化它:

File.WriteAllText("myfile.json"), JsonConvert.SerializeObject(videoInfo, Formatting.Indented, new NMediaInfoConverter()));

生活很好。这些文件是完美的,它们可以毫无问题地反序列化。

现在,如果我创建一个封装类,并使用 NMediaInfoConverter 装饰该属性:

class MyMediaInfo
{
    [JsonConverter(typeof(NMediaInfoConverter))]
    public NReco.VideoInfo.MediaInfo NMediaInfo { get; set; }
}

在 JSON 的最后,我得到一个额外的空格、“null”、一个换行符和一个额外的右括号:

 null

}

我在某个地方错过了重点吗?

4

0 回答 0