我已经索引了一个这样定义的对象:
public class CourseOffering
{
public int CourseId { get; set; }
public string Title { get; set; }
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
public ICollection<TimeBlock> TimeBlocks { get; set; }
}
TimeBlock 类定义为:
public class TimeBlock
{
public DayOfWeek Day { get; set; }
public LocalTime StartTime { get; set; }
public LocalTime EndTime { get; set; }
}
调用动态搜索方法时,一切正常(大概是因为它不知道要反序列化到什么)。结果正确返回。
当调用泛型搜索方法并传入 CourseOffering 类型时,默认序列化程序在反序列化 LocalTime 对象时出现问题。我得到以下 JsonReaderException:
读取整数时出错。意外标记:StartObject。路径 'hits.hits[0]._source.timeBlocks[0].startTime',第 1 行,位置 655。
我试过像这样添加 LocalTimeConverter:
var settings = new ConnectionSettings(uri);
settings.SetDefaultIndex(index);
settings.AddContractJsonConverters(t => typeof (LocalTime).IsAssignableFrom(t) ? NodaConverters.LocalTimeConverter : null);
但它会导致这个 JsonReaderException:
无法将字符串转换为整数:12:30:00。路径 'hits.hits[0]._source.timeBlocks[0].startTime',第 1 行,位置 664。
老实说,我无法判断我做错了什么,或者某个地方是否存在问题。任何帮助将不胜感激。