在做 API 作業時,尤其是使用 JSON 時,我有點新鮮。
這是我的代碼的樣子......
結尾:
[HttpPost("postWithBody")]
public async Task<IActionResult> PostWithBody (string param1, [FromBody] object requestBody)
{
var x = JsonSerializer.Deserialize<ParamModel>(requestBody); <-- Error cannot convert from 'object' to System.ReadOnlySpan<byte>
return ok(param1); <--this here just so it doesn't bark at me
}
所以在上面的代碼中,我(RequestBody)犯了這個錯誤:
錯誤無法從“物件”轉換為 System.ReadOnlySpan
public class ParamModel
{
public string PName {get;set;}
public string PValue {get;set;}
}
但基本上要完成我想要完成的演示,目標是將 JSON 值傳遞給正文中的此端點,如下所示:
{
"Param1": "XXX",
"Param2": "111"
}
我的目標是讓 CustomParams 模型類擁有
PName = Param1
PValue = "XXX"
和
PName = "Param2"
PValue = "111"
這是我正在采取的正確方法嗎?
謝謝你。
編輯:我想我可以這樣做:[FromBody] ParamModel requestBody
我確實嘗試過,當我像這樣傳遞 JSON 時,它在端點中為 null:
{"test":"hey"}
而且,我可能需要做這樣的事情,因為我希望可以選擇傳遞多個引數。
public class ParamList
{
public List<ParamModel> data {get;set;}
}
并將其設為 [FromBody] ParamList requestBody
uj5u.com熱心網友回復:
首先,我建議您在 action 引數中使用模型,并讓框架為您進行反序列化:
public async Task<IActionResult> PostWithBody(
string param1, [FromBody] ParamModel requestBody)
現在,您將能夠發布與該物件匹配的 JSON,例如:
{
"PName": "test",
"PValue": "hey"
}
在您的更新中,您說您希望改為使用該ParamList物件。在這種情況下,您需要匹配的 JSON,如下所示:
{
"data": [
{ "PName": "test1", "PValue": "hey1" },
{ "PName": "test2", "PValue": "hey2" }
]
}
現在,在您的操作中,您可以像這樣遍歷串列:
foreach(var param in requestBody.data)
{
var paramName = param.PName;
var paramValue = param.PValue;
// etc.
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/317545.html
上一篇:作業日的安排
