簡體   English   中英

使用 POSTMAN 客戶端的 C# Web API POST JSON 數據導致 FromBody 中始終為 NULL

[英]C# web API POST JSON data using POSTMAN client results in always NULL in FromBody

我有一個包含模型的 Web Api -

 public class Assessments
{
    public List<AssessmentResult> Results { get; set; }
}

public class AssessmentResult
{
    public int? AssessorId { get; set; }
    public int? AssessmentId { get; set; }
    public int? CentreId { get; set; }
    public int? BatchId { get; set; }
    public DateTime AssessmentDate { get; set; }

和控制器 -

[HttpPost]
    [ActionName("SetAssessmentResults")]
    public HttpResponseMessage SetAssessmentResults([FromBody] Assessments assessments)
    {
        try
        {

            string sproc = ConfigurationManager.AppSettings["ASSESSORAPP_InsertAssessmentsStaging"];
            //_dt = Helper.ToDataTable(assessments); use this if sending list doesnt work

            Mapper.Initialize(cfg =>
            {
                //cfg.CreateMissingTypeMaps = false;
                cfg.CreateMap<AssessmentResult, AssessmentTable>().IgnoreAllNonExisting();

                //cfg.IgnoreUnmapped();
            });
            List<AssessmentTable> assessmentTable = Mapper.Map<List<AssessmentResult>, List<AssessmentTable>>(assessments.Results);
            Mapper.Configuration.AssertConfigurationIsValid();

            string isSuccess = _db.InsertAssessmentResults(sproc, assessmentTable);
            if (isSuccess.Split('$')[0].ToLower() == "success")
            {
                return Request.CreateResponse(HttpStatusCode.OK, isSuccess);
            }
            else if (isSuccess.Split('$')[0].ToLower() == "duplicate")
            {
                return Request.CreateResponse(HttpStatusCode.OK, isSuccess);
            }
            else
            {
                return Request.CreateResponse(HttpStatusCode.OK, isSuccess);
            }
        }
        catch (Exception ex)
        {
            return Request.CreateResponse(HttpStatusCode.InternalServerError, ex);
        }
    }

客戶端,我正在使用 Postman Chrome 擴展程序。 我正在發送帶有 JSON 數據的 POST 請求。 但是,我沒有在控制器中獲取 JSON 數據(評估對象始終顯示 NULL 值)

顯示 NULL 值的評估對象

在客戶端,我請求使用 PostMan Chrome 擴展

郵差客戶端發送請求

這是我的 JSON 數據:

    {
"assessment":
[{
      "AssessorId": 3,
      "AssessmentId": 123,
      "CentreId": 1,
      "BatchId": null,
      "AssessmentDate": "2016-09-30T00:00:00",

    },{
     "AssessorId": 2,
      "AssessmentId": 123,
      "CentreId": 1,
      "BatchId": null,
      "AssessmentDate": "2016-09-30T00:00:00",
    }]
    }

我還添加了 Content-Type : application/json

請幫我解決這個問題。 謝謝 !

在您的類評估中,您將包含 AssessmentResult 列表的屬性命名為“結果”,但是當您發送帖子時,您將屬性命名為“評估”,它應該是“結果(考慮到您具有默認的序列化程序配置,例如:沒有屬性名稱序列化時降低駝峰式大小寫)

嘗試:

  {
     "Results":[{
                 "AssessorId": 3,
                 "AssessmentId": 123,
                 "CentreId": 1,
                 "BatchId": null,
                 "AssessmentDate": "2016-09-30T00:00:00",

               },
               {
                 "AssessorId": 2,
                 "AssessmentId": 123,
                 "CentreId": 1,
                 "BatchId": null,
                 "AssessmentDate": "2016-09-30T00:00:00",
               }]
 }

同樣作為一個好習慣,您應該在類的構造函數中實例化列表,例如:

public class Assessments
{
    public Assessments()
    {
         Results = new List<AssessmentResult>();
    }
    public List<AssessmentResult> Results { get; set; }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM