我有一个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 可以按照我已经做的方式处理它。
在启动时,我正在设置一些描述如何处理格式化的值,但显然这些值对于我尝试执行的操作不正确。
HttpConfiguration configuration = new HttpConfiguration();
var settings = configuration.Formatters.JsonFormatter.SerializerSettings;
settings.Formatting = Formatting.Indented;
settings.ContractResolver = new DefaultContractResolver();
我需要创建自定义合同解析程序或其他东西吗?有没有一个已经为我处理这个问题?
谢谢
如果你只想传递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);
}