簡體   English   中英

如何從 C# 中的 JsonPatchDocument 對象獲取實際值?

[英]How to get actual value from object of JsonPatchDocument in C#?

我有一個如下所示的有效負載,可通過 webAPI 中的補丁調用進行更新。

[
  {
    "value": [
      {
        "Id": "12",
       "name": "ABC"
      },
      {
        "Id": "89",
       "name": "XYZ"
      }
    ],
    "path": "/basepathofemployee",
    "op": "replace"
  }
]

我的控制器操作方法就像我想在那里獲取 Id & name 的值

public async Task<IActionResult> UpdateData([FromBody] JsonPatchDocument<EmployeeDocument> patchDoc)
{
   // here I want to get value of Id (12, 89) & name (ABC, XYZ)
}

我試圖從路徑本身中獲取價值,例如,

    var employee = patchDoc.Operations.Where(o => o.path.Equals("/basepathofemployee"));

它給了 IEnumerable ,如果我循環遍歷它,我沒有得到 id 和 name 的實際值。

你能指導我如何獲得 id 和 name 的實際值嗎?

如果它需要補丁文件:

if (patchDoc != null)
    {
        var model = CreateModel(); //need to create instance

        patchDoc.ApplyTo(model, ModelState);

        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }
        else{
          // model should have valid properties here
        }

        return new ObjectResult(model);
    }
    else
    {
        return BadRequest(ModelState);
    }

動作上也應該有這個裝飾器:

[HttpPatch]

如果可以不使用補丁文檔:

只需創建一個類:

public class Patch{

 public List<Data> value {get;set;}
 public string path {get;set;}
 public string op {get;set;}
}

和另一個數據

public class data{

 public int Id {get;set;}
 public string name {get;set;}
}

然后將簽名更改為:

public async Task<IActionResult> UpdateData([FromBody] Patch patchDoc)
{
   // here I want to get value of Id (12, 89) & name (ABC, XYZ)
   // should be available patchDoc.value[0].Id / patchDoc.value[1].Id

}

可能需要:

public async Task<IActionResult> UpdateData([FromBody] List<Patch> patchDoc)
{
   // here I want to get value of Id (12, 89) & name (ABC, XYZ)
   // should be available patchDoc[0].value[0].Id / patchDoc[0].value[1].Id

}

暫無
暫無

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

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