从json中删除root xml标记导致asp.net web api 2 c#

时间:2016-01-11 08:36:32

标签: asp.net api asp.net-web-api

我想从web API 2方法中撤消的json结果中删除根xml标记。 这是代码

[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>

2 个答案:

答案 0 :(得分: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));
}    

答案 1 :(得分: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"));