jsonConverter解决参考



我有一个自定义的jsonConverter,该verconverter可以在避难所期间处理派生类型的创建,在大多数情况下,这是按预期工作的。当JSON结构中有引用对象时,我遇到问题的情况是。当我们检测到参考时,是否可以依靠默认的避难所化?读取方法应该返回什么?在下面的示例中,我们在参考时返回null。

if (reader.TokenType == JsonToken.Null) return null;
var jObject = JObject.Load(reader);
JToken token;
if (jObject.TryGetValue("$ref", out token))
{
   return null; 
}

或我们必须实现自定义参考文献,因为默认一个不能在转换器中使用(仅内部使用(?

欢迎任何建议。

经过一些额外的测试,我自己找到了解决方案。当我第一次尝试使用默认的参考文献效果时,我得到了一个例外,说" Defaultreferenceresolver只能在内部使用。"。这将我的方向指向错误,您可以在转换器中使用Defaultreferenceresolver,但我以错误的方式称其为...

解决方案:

public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
  if (reader.TokenType == JsonToken.Null) return null;
  var jObject = JObject.Load(reader);
  string id = (string)jObject["$ref"];
  if (id != null)
  {
    return serializer.ReferenceResolver.ResolveReference(serializer, id);
  }
  // Custom instance creation comes here
}

相关内容

  • 没有找到相关文章

最新更新