以下はそのクライアントの下 Web APIでFromDataを使用してDictionary内のJSONデータを受け取る方法は?
{
"lstQuestions": [{
"QuestionCategory": 1,
"QuestionText": "what is m in mvc",
"OptionA": "model",
"OptionB": "view",
"OptionC": "controller",
"OptionD": "razor",
"CorrectOption": "A"
},
{
"QuestionCategory": 2,
"QuestionText": "How are you",
"OptionA": "fine",
"OptionB": "not fine",
"OptionC": "ok",
"OptionD": "not ok",
"CorrectOption": "A"
}],
"Status" : 1
}
は私のコントローラのAPIコードである「GetQuestion」と名付けられ、私のAPIに送信されますJSONの例である:
public class QuestionDetails
{
public List<Questions> lstQuestions { get; set; }
public int Status { get; set; }
}
public class Questions
{
public string QuestionCategory { get; set; }
public string QuestionText { get; set; }
public string OptionA { get; set; }
public string OptionB { get; set; }
public string OptionC { get; set; }
public string OptionD { get; set; }
public string CorrectOption { get; set; }
}
[Route("GetQuestions")]
[HttpPost]
public HttpResponseMessage SendQuestionDetails([FromBody] QuestionDetails UserDetailInput)
{
HttpResponseMessage mesage = Request.CreateResponse(HttpStatusCode.OK, "Demo"); ;
if (ModelState.IsValid)
{
//in progress
}
return mesage;
}
私は何をしたいクラスを作成する方法でありますDictionaryを使用してパラメータを渡すと、重いとディクショナリがListよりもはるかに速いので、Listを使用したくないです。コードの下
public class QuestionDetails
{
public Dictionary<string, Questions> lstQuestions { get; set; }
public int Status { get; set; }
}
public HttpResponseMessage SendQuestionDetails([FromBody] Dictionary<string, QuestionDetails> UserDetailInput)
{
HttpResponseMessage mesage = Request.CreateResponse(HttpStatusCode.OK, "Demo"); ;
if (ModelState.IsValid)
{
//in progress
}
return mesage;
}
私はデータを渡していません。サードパーティがJSONを送信しています。データを変更できません。私の質問はJSONではないC#に関するものです。どのようにリストではなく辞書を使うのですか? – Nik
@ニックそれでは、質問は意味をなさない。辞書のキーとして何を使用する予定ですか?配列内のインデックスを使用する場合は、単純な配列を作成するだけで、辞書とメモリ配列ではすべての操作がはるかに遅くなります。 –