所以我制作了一个自定义的 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
}
我在某个地方错过了重点吗?