C#API返回字符串而不是XML包装字符串

我正在使用ApiController,我无法接受调用以返回除XML之外的任何内容。

public class GuideController : ApiController { [AcceptVerbs("GET")] [HttpGet] public string Get() { Item item = Item.GetTestData(); string json = JsonConvert.SerializeObject(item); return json; } } 

理想情况下,我想正常返回JSON,但我决定返回原始字符串而不是XML包装的字符串。

确保api仅返回JSON的一种简单方法是从http配置中删除xml格式化程序。

您可以访问WebApiConfig类中的格式化程序

 public static class WebApiConfig { public static void Register(HttpConfiguration config) { // Web API routes config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); //Clear current formatters config.Formatters.Clear(); //Add only a json formatter config.Formatters.Add(new JsonMediaTypeFormatter()); } } 

UPDATE

不要序列化控制器中的对象。 只需按原样返回对象即可。 Web api将为您执行此操作,因为您已将json格式化程序附加到配置中。

 public class GuideController : ApiController { [AcceptVerbs("GET")] [HttpGet] public IHttpActionResult Get() { Item item = Item.GetTestData(); return Ok(item); } } 

尝试在客户端中设置Accept标头。 如果要接收JSON,请设置

接受:application / json

在你的客户。 希望有所帮助。

尝试显式返回JSON。

 [HttpGet] public IHttpActionResult Get() { Item item = Item.GetTestData(); return Json(item); }