反序列化重大更改 - Elasticsearch 7Nest 7,Elasticsearch.net

如何解决反序列化重大更改 - Elasticsearch 7Nest 7,Elasticsearch.net

由于 Elasticsearch 从 ver6.8 升级到 Elasticsearch 7 后 ELasticsearch 7(nest7、elasticsearch.net)发生了重大变化,我收到了反序列化异常。

在将嵌套 nesT 6 报告给 Elastichsearch 6 时,我们使用了 JsonConvert.DeserializeObject:

Dictionary<string,List<string>> filteredValuesPerColumnTitles = JsonConvert.DeserializeObject<Dictionary<string,List<string>>>(plotlyTraceData.FilteredValuesPerColumns);

或这些行:

CreateMap<TraceData,TraceResource>().ForMember(r => r.TraceJsonData,opt => opt.MapFrom(d => JsonConvert.DeserializeObject<Dictionary<string,object>>(d.TraceJsonData)));

public class TraceData
{
   public string DataSessionNumber { get; set; }

   public string FilteredValuesPerColumns { get; set; }

   public string TraceJsonData { get; set; }
}

public class TraceResource : BaseResource  
{     

   public string FilteredValuesPerColumns { get; set; }

   public string TraceJsonData { get; set; }

 public Dictionary<string,object> TraceJsonData { get; set; }

}

升级到 Elasticsearch 7、nest7 和 elasticsearch.net 后,我​​尝试按照新格式更改反序列化:

 Dictionary<string,List<string>> filteredValuesPerColumnTitles = new Dictionary<string,List<string>>();
 JsonNetSerializer jsonNetSerializer = new JsonNetSerializer(traceRepository.sourceSerializer,traceRepository.ConnectionSettings);
 
byte[] bytes = Encoding.UTF8.GetBytes(plotlyTraceData.FilteredValuesPerColumns);
using (MemoryStream memoryStream = new MemoryStream(bytes))
{
   filteredValuesPerColumnTitles = jsonNetSerializer.Deserialize<Dictionary<string,List<string>>> 
   (memoryStream);
}

但是我遇到了下一个异常,嵌套 6 或嵌套 7 试图向 ElasticSearch7 报告:

{Newtonsoft.Json.JsonReaderException:解析值时遇到意外字符:S. 路径 '',第 0 行,位置 0。 在 Newtonsoft.Json.JsonTextReader.ParseValue() 在 Newtonsoft.Json.JsonReader.ReadForType(JsonContract contract,Boolean hasConverter) 在 Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader,Type objectType,Boolean checkAdditionalContent) 在 Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader,Type objectType) 在 Newtonsoft.Json.JsonConvert.DeserializeObject(字符串值,类型类型,JsonSerializerSettings 设置) 在 Newtonsoft.Json.JsonConvert.DeserializeObject[T](字符串值,JsonSerializerSettings 设置) 在 Controllers.OutputController.d__4.MoveNext() 在 C:\Projects\Controllers\OutputController.cs:line 99}

客户端初始化:

    var uri = new UriBuilder("http",ElasticHandlerSettings.Value.ElasticUri,Convert.ToInt32(ElasticHandlerSettings.Value.ElasticPort)).Uri;

    // Set Default Mapping for GET methods //
    var settings = new ConnectionSettings(uri)
        .DefaultMappingFor<AutomationLogData>(m => m
        .IndexName($"{IndexPrefix.LOG_INDEX_PREFIX}-*"))
        //.TypeName(nameof(AutomationLogData)))
        .DefaultMappingFor<AutomationLayoutData>(m => m
        .IndexName($"{IndexPrefix.LAYOUT_INDEX_PREFIX}-*"))
        //.TypeName(nameof(AutomationLayoutData)))
        .DefaultMappingFor<TraceData>(m => m
        .IndexName($"{IndexPrefix.TRACE_INDEX_PREFIX}-*"));
        //.TypeName(nameof(TraceData)));

    Client = new Elasticclient(settings);

请告知如何修复它。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?