ADE
ADE

Reputation: 85

Web API returns escaped JSON

I have a POST method in a .NET core 2.0 web API project that needs to return a JSON (using newtonsoft). I have the following code at the end of the method:

ObjectResult objRes = new ObjectResult(JsonConvert.SerializeObject(result, settings));
objRes.ContentTypes.Add(new MediaTypeHeaderValue("application/json"));
return objRes

When I test this using Postman I get a result like:

"{\"name\":\"test\",\"value\":\"test\"}"

As you can see, the JSON is still escaped in postman. When I test the exact same code in a .NET core 1.0 project, I get the following in Postman:

{
  "name": "test",
  "value": "test"
}

How can I get the same result in my .NET core 2.0 project? I was thinking it might have been due to Newtonsoft but when I debug the deserialization into a string, the debugger shows exactly the same (escaped) value in both the .NET core 1.0 and 2.0 project.

Upvotes: 5

Views: 4657

Answers (2)

Zorie
Zorie

Reputation: 125

I don't think you have to serialize your object before sending it. In .NET Core it will be serialized for you by default.

Upvotes: 7

Allrameest
Allrameest

Reputation: 4492

You can just return result in the controller and it will be serialized by the framework.

[HttpPost]
public object Post()
{
    var result = new MyObject { Name = "test", Value = "test" };
    return result;
}

Or you can do:

return new OkObjectResult(result);

Or if you inherit from Controller:

return Ok(result);

Upvotes: 5

Related Questions