假设我有以下json
{ id: 1, name: "Eddy Vedder" }
将在以下类中反序列化:
public class GuitarIdol {
public int Id { get; set; }
public string Name { get; set; }
}
由于GuitarIdol
只是接口的一个实现,我创建了一个自定义JsonConverter
类来帮助模型绑定器进行反序列化。然后,我使用相应的属性
GuitarIdol
[JsonConverter( typeof( GuitarIdolConverter ) )]
public class GuitarIdol {
}
如果要反序列化的对象单独包含在web api请求的主体中,则此方法非常有效。例如:
public async Task<HttpResponseMessage> Create( GuitarIdol idol )
当我尝试将此GuitarIdol对象嵌套在另一个类中时,会出现问题。例如:
public class MyClass {
public string Notes { get; set; }
public GuitarIdol Idol { get; set; }
}
所以我在api中有一个不同的动作方法
public async Task<HttpResponseMessage> Update( MyClass model )
在这种情况下,我的自定义JsonConverter按预期正确调用,但Json.Net库不会仅传递我想要转换的json部分,而是传递整个json。例如:
{ idol: { id: 1, name: "Eddy Vedder" }, notes: "great music" }
如何才能更好地编写自定义json转换器的代码以使其具有弹性并且只能解析感兴趣的字符串部分?