3

目前我正在做的是将JsonResult.Datathen Deserialized 序列化为dynamic变量,然后在每一行中循环并获取Document. 有没有办法处理这个?谢谢

            if (string.IsNullOrWhiteSpace(searchTerm_))
                searchTerm_ = "*";
            _azureSearch = new AzureSearchService("afindexdev");
            JsonResult result = new JsonResult
            {
                JsonRequestBehavior = JsonRequestBehavior.AllowGet,
                Data = _azureSearch.SearchAssetFactory(searchTerm_).Results
            };

            string json = JsonConvert.SerializeObject(result.Data);
            var resultJsonString = Newtonsoft.Json.JsonConvert.DeserializeObject<dynamic>(json);

            foreach (dynamic row in resultJsonString)
            {
                var associatemItem = new AssociatedItem();
                associatemItem.Id = row.Document.Id;
                associatemItem.Title = row.Document.Title;
                associatemItem.Type = row.Document.Type;

                searcResult.AssociatedItems.Add(associatemItem);
            }
4

2 回答 2

0

那这个呢?

var associatedItem = Newtonsoft.Json.JsonConvert.DeserializeObject< List < AssociatedItem >>(json);

这样您就不必自己制作对象。

于 2016-01-15T06:54:25.047 回答
0

您可以使用属性 [SerializePropertyNamesAsCamelCase] 定义要反序列化的属性的模型。此属性包含在 Microsoft.Azure.Search 库中。之后,您需要做的就是在搜索泛型中定义您的模型 - 就像这个 Hotel 类

var sp = new SearchParameters();

if (!String.IsNullOrEmpty(filter))
{
    sp.Filter = filter;
}

DocumentSearchResult<Hotel> response = indexClient.Documents.Search<Hotel>(searchText, sp);

你可以在这里找到更多信息

于 2016-09-22T14:14:23.547 回答