【发布时间】:2017-07-08 22:03:00
【问题描述】:
我正在创建一个自定义 JsonConverter 以将属性 "Type" : "A"(或“D”、“E”等)转换为包含 Article、Disambuigation 等的枚举。这是相关的转换器类中的代码:
public override bool CanConvert(Type objectType) => objectType == typeof(SearchResultType);
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
var jsonObject = JObject.Load(reader);
var typeProperty = jsonObject.Properties().FirstOrDefault(p => p.Name == "Type");
switch ((string)typeProperty.Value)
{
case "A": return SearchResultType.Article;
default: return SearchResultType.None;
}
}
我的问题是它总是抛出带有消息的异常:
从 JsonReader 读取 JObject 时出错。当前 JsonReader 项不是对象:字符串。
我理解这意味着它期望像 "Name" : "Hello world!" 这样的东西,但得到了 "Name" : 123。但是,我确定它无法解析的属性是字符串。我的转换器有问题吗?
【问题讨论】: