При попытке десериализации поля, содержащего Json, из моей базы данных для индексации вasticsearch, все вложенные поля получают пустой массив в качестве значения.
{
"_index": "dev",
"_type": "user",
"_id": "072512c2-fc23-471a-9e07-65c3a041f06b",
"_score": 1,
"_source": {
"providerInfos": """{"Global":{"Email":"email@hotmail.com","FirstName":"Name","LastName":"Last Name","PostalCode":"XXXXXX","Address":"99 Street","Town":"City","Gender":"M","PhoneNumber":null,"CreatedDate":"2018-04-14T14:34:42.4850547Z","LastLoginDate":"0001-01-01T00:00:00"}}""",
"providers": {
"Global": {
"Email": [],
"FirstName": [],
"LastName": [],
"PostalCode": [],
"Address": [],
"Town": [],
"Gender": [],
"PhoneNumber": [],
"CreatedDate": [],
"LastLoginDate": []
},
Мой код для десериализации следующий:
public class User : IdentityUser
public string JsonInfo { get; protected set; }
[NotMapped]
public Dictionary<string, dynamic> Infos
{
get => JsonConvert.DeserializeObject<Dictionary<string, dynamic>>(JsonInfo ?? "") ??
new Dictionary<string, dynamic>();
}
}
В поле JsonInfo в моей базе данных у меня есть, например:
{"Global":{"Email":"email@hotmail.com","FirstName":"Name","LastName":"Last Name","PostalCode":"XXXXXX","Address":"99 Street","Town":"City","Gender":"M","PhoneNumber":null,"CreatedDate":"2018-04-14T14:34:42.4850547Z","LastLoginDate":"0001-01-01T00:00:00"}}
И индексировать все это:
var users = await uow.GetRepository<FedecpIdentityUser, string>().GetAsync();
var indexAllAsync = users
.Select(u => _elasticSearch.Client.IndexAsync(u, p => p.Id(u.Id.ToString()))).ToList();
Я заметил, что это происходит после того, как я обновил Nest с 5.4 до 6.02, может ли это быть? Я не нашел ничего об этом в журналах изменений.