Home > Mobile >  How to convert String response (Text) to JSON response in .net core
How to convert String response (Text) to JSON response in .net core

Time:02-20

I need to convert String response to Json response. But I have to use different way to fix my issue but I couldn't able to find any good solution for that.

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);

I just need to send this successRespose as JSON response. Can you please help me to resolve this.

CodePudding user response:

Please have a read over Format response data in ASP.NET Core Web API. There are multiple possibilities, depending on what your exact requirements are.

The simplest option is to add [Produces] attribute to the controller action, specifying the type that's returned from the aciton:

[Produces("application/json")]
public IActionResult YourAction(int id) { ... }

The above action will return application/json even when the return type of the action is string.


However, it looks like you're returning two values in the string (InterfaceRecordId and ReceiptId). You can use built-in methods (such as Ok(), BadRequest(), Created(), NotFound(), etc) which convert the object to JSON and return a specific status code.

I would recommend returning an object containing both values, and use a convenience return method (Created() or CreatedAtAction()). The following returns an anonymous object and status code 201:

var successResponse = new 
{ 
    InterfaceRecordId = order.WMWDATA.Receipts.Receipt.InterfaceRecordId,
    ReceiptId = order.WMWDATA.Receipts.Receipt.ReceiptId
}

return CreatedAtAction(nameof(YourAction), successResponse); 

The CreatedAtAction (and Created) convenience methods return a 201 (created) HTTP Code - so the client will be able to infer that from the status code. And since it's returning an object (rather than a string), the return type defaults to application/json, so there's no need for the [Produces] attribute.

  • Related