假设我有一些带有描述属性的视频POCO,其中包含一些文本,后跟[foo,bar]
形式的标签。我想从描述中提取标记,将其从描述中删除并将标记添加到Tags
属性。
我只想自定义反序列化自定义JsonConverter中的Description
属性,让Json.Net像往常一样反序列化其他属性。我试着调用serializer.Deserialize<MyVideo>(reader)
,但这会再次触发我的转换器,创建一个递归循环。
那么我可以自己处理Description
和Tags
属性,让Json.Net以其他方式反序列化其他所有内容吗?
MyVideo POCO示例:
[JsonConverter(typeof(VideoDescriptionConverter))]
public class MyVideo
{
[JsonProperty("description")]
public string Description { get; set; }
public IList<string> Tags { get; set; }
// <more properties>
}
我的VideoDescriptionConverter.ReadJson
方法:
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
// This will recursively loop so doesn't work:
var video = serializer.Deserialize<MyVideo>(reader);
//video.Description = <extract description and tags>
//video.Tags = ...
return video;
}