Web API returns escaped JSON

随声附和 提交于 2019-12-12 13:29:38

问题


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.


回答1:


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



回答2:


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



来源:https://stackoverflow.com/questions/47309658/web-api-returns-escaped-json

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!