.NETとMVCの新機能です。 ViewBag内のオブジェクトにいくつかのJSONを逆シリアル化するために苦労します。 JSONはAzure Searchから来ています。MVCでJSONを逆シリアル化する
{
"@odata.context": "https://url.toazuresearch/indexes('index01')/$metadata#docs",
"value": [
{
"@search.score": 0.31507686,
"Id": "34",
"Date": "2017-08-24T09:14:56.193Z",
"Domain": "domain.com",
"RuleName": "Legacy Reports",
"Log": "Log text",
"ChangeId": "changeId",
"ParentId": "0",
"Comments": "Comments"
},
{
"@search.score": 0.2553736,
"Id": "35",
"Date": "2017-08-24T09:14:56.193Z",
"Domain": "domain.com",
"RuleName": "Legacy Reports",
"Log": "Log text",
"ChangeId": "changeId",
"ParentId": "0",
"Comments": "Comments"
}
]
}
私のクラスには、次のようになります:
[DataContract]
public class SearchResult
{
[DataMember]
public float SearchScore { get; set; }
[DataMember]
public string Id { get; set; }
[DataMember]
public DateTime Date { get; set; }
[DataMember]
public string Domain { get; set; }
[DataMember]
public string RuleName { get; set; }
[DataMember]
public string Log { get; set; }
[DataMember]
public string ChangeId { get; set; }
[DataMember]
public string ParentId { get; set; }
[DataMember]
public string Comments { get; set; }
}
ここでレスポンスを処理するためのコントローラでの私のコード:私はWebHttpRequestはこのようにJSONを返す確認した
try
{
WebResponse response = request.GetResponse();
using (Stream responseStream = response.GetResponseStream())
{
StreamReader reader = new StreamReader(responseStream, Encoding.UTF8);
DataContractJsonSerializer serializer =
new DataContractJsonSerializer(typeof(IEnumerable<SearchResult>));
var results =
(IEnumerable<SearchResult>)serializer.ReadObject(responseStream);
ViewBag.SearchResults = results;
}
}
catch (WebException ex)
{
WebResponse errorResponse = ex.Response;
using (Stream responseStream = errorResponse.GetResponseStream())
{
StreamReader reader = new StreamReader(responseStream, Encoding.GetEncoding("utf-8"));
ViewBag.SearchError = reader.ReadToEnd();
ViewBag.SearchResults = "0 Results";
}
throw;
}
そして、最終的には、結果をループして表示しようとしています。
空のページが表示されています。 VSでテストしても例外はありません。
グレート答え、完全に詳しく説明。素敵な仕事 – Darthchai
これは私がヘルプフォーラムで受け取った最高の回答の一つです。詳細、そしてViewModelsのヒントをありがとう。私はAzureの検索結果を解析しています。再度、感謝します! – JOb801