【发布时间】:2017-02-13 19:49:46
【问题描述】:
我想弄清楚如何使用自定义 JsonConverter 作为属性。问题是我无法弄清楚如何在转换器中获取 FOO 对象。
例子
[Newtonsoft.Json.JsonConverter(typeof(FOOConverter))]
public interface IFOO
{
...
}
public class FOOConverter : Newtonsoft.Json.JsonConverter
{
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
var jobj = serializer.Deserialize<JObject>(reader);
...
var foo = jobj.ToObject<IFOO>() // Calls the converter again?
}
}
.ToObject() 将再次运行转换器并导致堆栈溢出,这是有道理的,因为它查看属性,但我怎样才能获得 IFOO 对象呢?
编辑:WriteJson 将是类似的,但带有 JObject.FromObject(value);
使用需要灵活,例如:某些属性可能在序列化期间被加密/加密,其他时候,可能有需要缓存的属性值。想几个用例。
【问题讨论】: