Elasticsearch 7.x для .NET имеет документированное критическое изменение с помощью внутреннего сериализатора JSON Utf8 .
Вместо меня используется другая опция -> сериализатор Json.NET от Newtonsoft, яЯ пытаюсь выяснить, какая часть моего JSON нарушает работу сериализатора.
- Клиентский nuget:
7.3.1
- Сервер:
7.2.0
Во-первых, ошибка чувствует , как будто это полезно, но я не думаю, что это действительно так:
2019-10-18 17:15:33 ERR Fatal error.
Elasticsearch.Net.UnexpectedElasticsearchClientException: expected:'String Begin Token', actual:'2', at offset:540 ---> Elasticsearch.Net.Utf8Json.JsonParsingException: expected:'String Begin Token', actual:'2', at offset:540
at Elasticsearch.Net.Utf8Json.JsonReader.ReadStringSegmentCore(Byte[]& resultBytes, Int32& resultOffset, Int32& resultLength)
at Elasticsearch.Net.Utf8Json.JsonReader.ReadString()
at Deserialize(Object[] , JsonReader& , IJsonFormatterResolver )
at Elasticsearch.Net.Utf8Json.JsonSerializer.Deserialize[T](Byte[] bytes, Int32 offset, IJsonFormatterResolver resolver)
at Elasticsearch.Net.Utf8Json.JsonSerializer.Deserialize[T](Stream stream, IJsonFormatterResolver resolver)
at Elasticsearch.Net.DiagnosticsSerializerProxy.Deserialize[T](Stream stream)
at Nest.SourceFormatter`1.Deserialize(JsonReader& reader, IJsonFormatterResolver formatterResolver)
at Deserialize(Object[] , JsonReader& , IJsonFormatterResolver )
at Nest.ReadAsFormatter`2.Deserialize(JsonReader& reader, IJsonFormatterResolver formatterResolver)
at Elasticsearch.Net.Utf8Json.Formatters.CollectionFormatterBase`4.Deserialize(JsonReader& reader, IJsonFormatterResolver formatterResolver)
at Deserialize(Object[] , JsonReader& , IJsonFormatterResolver )
at Nest.ReadAsFormatter`2.Deserialize(JsonReader& reader, IJsonFormatterResolver formatterResolver)
... etc ...
Так что у персонажа 540
что-то плохое.
Так что я думаю У меня есть JSON, который вернулся. Я думаю , потому что я попросил коллегу использовать Fiddler и дать мне результат полезной нагрузки. Я не могу вставить всю полезную нагрузку в любом месте, потому что она содержит конфиденциальные данные, но это часть кода в строке 540
Там нет '2'там.
Так что насчет Json? Вот хорошо отформатированный снимок экрана json со скрытыми пользовательскими результатами:
и, наконец, раздел poco для раздела Iдумаю, что ошибается (но я не уверен):
[Keyword(Index = false)]
public string Street { get; set; }
[Keyword]
public string Suburb { get; set; }
[Keyword]
public string State { get; set; }
[Keyword]
public string StateCode { get; set; }
[Keyword]
public string Country { get; set; }
[Keyword]
public string Postcode { get; set; }
[GeoPoint]
public GeoLocation LatLong { get; set; }
Итак:
- Я не уверен, как получить точный json, который анализируетсяГНЕЗДО. Это json, который я взял, что может быть подтверждено предоставленным фрагментом?
- Есть ли способ, которым я могу вручную создать модульный тест + использовать внутренний сериализатор Utf8 с NEST для загрузки моего json, если я сохраню этоПолезная нагрузка JSON в файл для дальнейшей отладки?