2017-07-12 6 views
0

以下はそのクライアントの下 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; 

    } 

答えて

0

あなたは辞書と話しているのかわからないが、リストよりもはるかに高速ですが、あなただけの

{ 
    "A": { 
     "lstQuestions": { 
      "A": { 
       "QuestionCategory": 1, 
       "QuestionText": "what is m in mvc", 
       "OptionA": "model", 
       "OptionB": "view", 
       "OptionC": "controller", 
       "OptionD": "razor", 
       "CorrectOption": "A" 
      }, 
      "V": { 
       "QuestionCategory": 2, 
       "QuestionText": "How are you", 
       "OptionA": "fine", 
       "OptionB": "not fine", 
       "OptionC": "ok", 
       "OptionD": "not ok", 
       "CorrectOption": "A" 
      } 
     }, 
     "Status": 1 
    } 
} 
+0

私はデータを渡していません。サードパーティがJSONを送信しています。データを変更できません。私の質問はJSONではないC#に関するものです。どのようにリストではなく辞書を使うのですか? – Nik

+0

@ニックそれでは、質問は意味をなさない。辞書のキーとして何を使用する予定ですか?配列内のインデックスを使用する場合は、単純な配列を作成するだけで、辞書とメモリ配列ではすべての操作がはるかに遅くなります。 –

-1

としてJSONを送信する必要が希望します:たとえば

あなたの質問をクリアしてください。

public HttpResponseMessage SendQuestionDetails([FromBody] Dictionary<string, QuestionDetails> UserDetailInput) 
     { 
    List<Questions> list = new List<Questions> { }; 
      list.Add(new Questions 
      { 
       CorrectOption = "CorrectOption1", 
       OptionA = "OptionA1", 
       OptionB = "OptionB1", 
       OptionC = "OptionC1", 
       OptionD = "OptionD1", 
       QuestionCategory = "QuestionCategory1", 
       QuestionText = "QuestionText1" 
      }); 
      list.Add(new Questions 
      { 
       CorrectOption = "CorrectOption2", 
       OptionA = "OptionA2", 
       OptionB = "OptionB2", 
       OptionC = "OptionC2", 
       OptionD = "OptionD2", 
       QuestionCategory = "QuestionCategory2", 
       QuestionText = "QuestionText2" 
      }); 

      Dictionary<QuestionDetails, int> dictionary = new Dictionary<QuestionDetails, int> { }; 
      QuestionDetails detail = new QuestionDetails { lstQuestions = list, Status = 1 }; 

      HttpResponseMessage mesage = Request.CreateResponse(HttpStatusCode.OK, detail); 
      return mesage; 
    return mesage; 
    } 
+0

ここで何をしようとしたのか分かりませんか? –

+0

希望のjson形式を返すコードを提供するだけです。 –

+0

彼の質問は悪いですが、答えは単にディテールオブジェクトと 'Dictionary 辞書=新しい辞書 {};'使用されません。 –

関連する問題