我需要將字串回應轉換為 Json 回應。但是我必須使用不同的方法來解決我的問題,但我找不到任何好的解決方案。
if (response.IsSuccessStatusCode)
{
string successResponse = "Order Created Successfully with InterfaceRecordId : " order.WMWDATA.Receipts.Receipt.InterfaceRecordId " & ReceiptId : "
order.WMWDATA.Receipts.Receipt.ReceiptId;
_logger.LogInformation(successResponse);
return StatusCode((int)response.StatusCode, successResponse);
}
_logger.LogError(jsonResponse);
return StatusCode((int)response.StatusCode, jsonResponse);
我只需要將其successRespose作為 JSON 回應發送。你能幫我解決這個問題嗎?
uj5u.com熱心網友回復:
請閱讀ASP.NET Core Web API 中的 Format response data。有多種可能性,具體取決于您的確切要求。
最簡單的選項是將[Produces]屬性添加到控制器操作,指定從 aciton 回傳的型別:
[Produces("application/json")]
public IActionResult YourAction(int id) { ... }
application/json即使操作的回傳型別為 ,上述操作也會回傳string。
但是,看起來您在字串 (InterfaceRecordId和ReceiptId) 中回傳了兩個值。您可以使用將物件轉換為 JSON 并回傳特定狀態代碼的內置方法(例如Ok()、BadRequest()、Created()、等)。NotFound()
我建議回傳一個包含兩個值的物件,并使用方便的回傳方法(Created()或CreatedAtAction())。下面回傳一個匿名物件和狀態碼 201:
var successResponse = new
{
InterfaceRecordId = order.WMWDATA.Receipts.Receipt.InterfaceRecordId,
ReceiptId = order.WMWDATA.Receipts.Receipt.ReceiptId
}
return CreatedAtAction(nameof(YourAction), successResponse);
( CreatedAtActionand Created) 便捷方法回傳 201(已創建)HTTP 代碼 - 因此客戶端將能夠從狀態代碼中推斷出它。而且由于它回傳一個物件(而不是一個字串),回傳型別默認為application/json,因此不需要該[Produces]屬性。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/428780.html
標籤:C# 。网 asp.net-mvc asp.net 核心 .net-core
