Reputation: 85
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
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
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