网页 API returns 转义 JSON
Web API returns escaped JSON
我在 .NET core 2.0 web API 项目中有一个 POST 方法需要 return JSON(使用 newtonsoft)。我在方法末尾有以下代码:
ObjectResult objRes = new ObjectResult(JsonConvert.SerializeObject(result, settings));
objRes.ContentTypes.Add(new MediaTypeHeaderValue("application/json"));
return objRes
当我使用 Postman 对此进行测试时,我得到如下结果:
"{\"name\":\"test\",\"value\":\"test\"}"
如你所见,JSON 仍然在 postman 中进行了转义。当我在 .NET core 1.0 项目中测试完全相同的代码时,我在 Postman 中得到以下信息:
{
"name": "test",
"value": "test"
}
如何在我的 .NET Core 2.0 项目中获得相同的结果?
我当时认为这可能是由于 Newtonsoft 造成的,但是当我将反序列化调试为字符串时,调试器在 .NET Core 1.0 和 2.0 项目中显示完全相同的(转义)值。
您可以只 return 在控制器中生成结果,它会被框架序列化。
[HttpPost]
public object Post()
{
var result = new MyObject { Name = "test", Value = "test" };
return result;
}
或者你可以这样做:
return new OkObjectResult(result);
或者如果您继承自 Controller:
return Ok(result);
我认为您不必在发送对象之前对其进行序列化。在 .NET Core 中,它将默认为您序列化。
我在 .NET core 2.0 web API 项目中有一个 POST 方法需要 return JSON(使用 newtonsoft)。我在方法末尾有以下代码:
ObjectResult objRes = new ObjectResult(JsonConvert.SerializeObject(result, settings));
objRes.ContentTypes.Add(new MediaTypeHeaderValue("application/json"));
return objRes
当我使用 Postman 对此进行测试时,我得到如下结果:
"{\"name\":\"test\",\"value\":\"test\"}"
如你所见,JSON 仍然在 postman 中进行了转义。当我在 .NET core 1.0 项目中测试完全相同的代码时,我在 Postman 中得到以下信息:
{
"name": "test",
"value": "test"
}
如何在我的 .NET Core 2.0 项目中获得相同的结果? 我当时认为这可能是由于 Newtonsoft 造成的,但是当我将反序列化调试为字符串时,调试器在 .NET Core 1.0 和 2.0 项目中显示完全相同的(转义)值。
您可以只 return 在控制器中生成结果,它会被框架序列化。
[HttpPost]
public object Post()
{
var result = new MyObject { Name = "test", Value = "test" };
return result;
}
或者你可以这样做:
return new OkObjectResult(result);
或者如果您继承自 Controller:
return Ok(result);
我认为您不必在发送对象之前对其进行序列化。在 .NET Core 中,它将默认为您序列化。