2017-07-12 32 views
0

下面是JSON例子客戶端將發送到我命名爲「GetQuestion」 API如何使用Web api中的FromData接收字典中的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代碼:

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快得多。

例如:

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

不知道你在談論與解釋比列表更快,但你只需要發送的JSON作爲

{ 
    "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,我無法修改數據。我的問題是關於C#而不是JSON。如何使用Dictionary而不是List? – Nik

+0

@Nik那麼你的問題是沒有意義的。你打算用什麼字典作爲關鍵詞?如果您在數組中使用索引,那麼您只需創建一個簡單的數組,並且所有操作對於字典和內存數組都要慢很多。 –

-1

希望以下的代碼清除您的查詢。

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 dictionary = new Dictionary {};'從來沒有使用過。 –

相關問題