2016-01-11 41 views
1

我想从web API 2方法中删除json结果中的根xml标记。 这里是代码从json中删除root xml标记导致asp.net web api 2 c#

[HttpGet] 
public string Get() 
{ 
    var data = context.Languages 
     .Select 
     (lang => new 
     { 
      id = lang.Language_ID, 
      title = lang.Name 
     }); 
    //return JsonConvert.SerializeObject(data, Formatting.Indented); 
    return new JavaScriptSerializer().Serialize(data); 
} 

下面是结果字符串

<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/"> 
    [{"id":1,"title":"Arabic"},{"id":2,"title":"English"},{"id":3,"title":"French"}] 
</string> 

回答

0

你的方法返回一个字符串,这就是为什么你得到的字符串XML标签,试试这个,而不是

[HttpGet] 
public ActionResult Get() 
{ 
    var data = context.Languages 
     .Select 
     (lang => new 
     { 
      id = lang.Language_ID, 
      title = lang.Name 
     }); 
    //return JsonConvert.SerializeObject(data, Formatting.Indented); 
    return Json(new JavaScriptSerializer().Serialize(data)); 
}  
0

我解决通过创建新类并按以下代码更改方法的问题

[HttpGet] 
    public IEnumerable<BasicItem> Get() 
    { 
     var data = context.Languages 
      .Select 
      (lang => new BasicItem 
      { 
       id = lang.Language_ID, 
       title = lang.Name 
      }); 
     //return JsonConvert.SerializeObject(data, Formatting.Indented); 
     return data; 
    } 

的asp.net会自动序列化 以确保返回的结果是JSON我下面的代码添加到WebApiConfig

config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));