以下是自定义 Json 转换器中的 ReadJson 覆盖方法,该方法正在我尝试使用的项目之一中使用:
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
string rawJson = null;
JObject jObject = null;
try
{
if (!(reader.TokenType != JsonToken.Null) ) return null;
jObject =JObject.Load(reader);
CustomerObject target = default(CustomerObject);
if (jObject != null)
{
if (jObject["$ref"] != null)
{
string id = (jObject["$ref"] as JValue).Value as string;
target = (CustomerObject )serializer.ReferenceResolver.ResolveReference(serializer, id);
}
else
{
target = Create(objectType, jObject);
rawJson = jObject.ToString();
serializer.Populate(jObject.CreateReader(), target);
ResumeDirtyTracking(target);
}
}
return target;
}
但是在
jObject =JObject.Load(reader);
行,它为这样显示的令牌抛出异常
:{{ "$id": null, "$values": null }}
读者 TokenType 在此令牌和路径中为“EndObject”:Customer.Added
准确的错误描述:
从 JsonReader 读取 JObject 时出错。当前 JsonReader 项不是对象:EndObject。路径 'Customer.Added',
有人可以帮我如何将这一行序列化为 Jobject ..我在这里缺少什么
如果 TokenType 是 endobject,我尝试跳过 Jobject.Load,并添加一行以使用 reader.Read() 进一步读取 Json,但这显然不起作用。 还尝试将 Jobject.Laod 更改为 Jobject.Parse 但这也没有用。