Json.NET使用JsonConverter自定义反序列化为多个属性

时间:2017-03-03 11:30:35

标签: c# json.net deserialization

假设我有一些带有描述属性的视频POCO,其中包含一些文本,后跟[foo,bar]形式的标签。我想从描述中提取标记,将其从描述中删除并将标记添加到Tags属性。

我只想自定义反序列化自定义JsonConverter中的Description属性,让Json.Net像往常一样反序列化其他属性。我试着调用serializer.Deserialize<MyVideo>(reader),但这会再次触发我的转换器,创建一个递归循环。

那么我可以自己处理DescriptionTags属性,让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;
}

0 个答案:

没有答案