У меня есть приложение .NET, которое я хочу использовать для запроса Elasticsearch.Я успешно запрашиваю свой индекс Elasticsearch.Результат выглядит примерно так:
{
"took":31,
"timed_out":false,
"_shards": {
"total":91,
"successful":91,
"skipped":0,
"failed":0
},
"hits":{
"total":1,
"max_score":1.0,
"hits":[
{
"_index":"my-index",
"_type":"doc",
"_id":"TrxrZGYQRaDom5XaZp23",
"_score":1.0,
"_source":{
"my_id":"65a107ed-7325-342d-adab-21fec0a97858",
"host":"something",
"zip":"12345"
}
},
]
}
}
В настоящее время эти данные доступны через свойство Body
в StringResponse
, который я получаю от Elasticsearch.Я хочу десериализовать фактические записи (мне не нужны или не нужны свойства took
, timed_out
и т. Д.) В объект C # с именем results
.В попытке сделать это у меня есть:
var results = JsonConvert.DeserializeObject<List<Result>>(response.Body);
Класс Result
выглядит следующим образом:
public class Result
{
[JsonProperty(PropertyName = "my_id")]
public string Id { get; set; }
[JsonProperty(PropertyName = "host")]
public string Host { get; set; }
[JsonProperty(PropertyName = "zip")]
public string PostalCode { get; set; }
}
Когда я запускаю это, я получаю следующую ошибку:
Невозможно десериализовать текущий объект JSON в тип 'System.Collections.Generic.List`1 [Result]', поскольку для корректной десериализации типа требуется массив JSON.
Хотяошибка имеет смысл, я не знаю, как разобрать hits
, чтобы просто извлечь данные _source
.Свойство _source
содержит данные, которые я хочу десериализовать.Все остальное - просто метаданные, которые меня не волнуют.
Есть ли способ сделать это?Если да, то как?