我有一个Web Api服务,它从另一个服务中检索数据,该服务返回Json。我不想对响应做任何事情,我只想将它直接返回给客户端。
由于响应是一个字符串,如果我只是返回响应,它包含转义字符和杂乱的格式。如果我将响应转换为对象,WebApi将使用Json.Net自动格式化响应。
public IHttpActionResult GetServices()
{
var data = _dataService.Get(); //retrieves data from a service
var result = JsonConvert.DeserializeObject(data); //convert to object
return Ok(result);
}
我想要的是A:能够从服务返回确切的字符串响应,没有任何转义字符和正确的格式,或者B:设置一个全局设置,将自动反序列化响应所以Web Api可以按照我的方式处理它。
On Startup我正在设置一些值来描述如何处理格式化,但显然这些对于我想要做的事情是不正确的。
HttpConfiguration configuration = new HttpConfiguration();
var settings = configuration.Formatters.JsonFormatter.SerializerSettings;
settings.Formatting = Formatting.Indented;
settings.ContractResolver = new DefaultContractResolver();
我是否需要创建自定义ContractResolver或其他内容?有没有一个已经为我处理过这个?
由于
答案 0 :(得分:1)
如果你想通过json(选项A),你可以这样做
public IHttpActionResult GetServices() {
var json = _dataService.Get(); //retrieves data from a service
HttpContent content = new System.Net.Http.StringContent(json, Encoding.UTF8, "application/json");
var response = Request.CreateResponse(HttpStatusCode.OK);
response.Content = content;
return ResponseMessage(response);
}