JSON.NET WriteRaw在输出上放置额外的数据和右括号

时间:2019-03-20 20:09:08

标签: c# json.net nreco

因此,我制作了一个自定义的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

}

我在某处错过了重点吗?

0 个答案:

没有答案