如何获取JSON响应而不是XML?

时间:2012-10-01 09:34:10

标签: json asp.net-mvc-4 asp.net-web-api content-type

我只是创建一个新的WebApi项目并保留默认控制器:

public class ValuesController : ApiController
{ 
    // GET api/values/5
    public string Get(int id)
    {
        return "value";
    }

    //other services...
}

当我尝试请求它时,我无法获得有效的JSON结果。

  • 没有特定的标头=> application/xml结果
  • content-type分配给application/json =>的标头application/xml结果
  • accept分配给application/json的标题为我提供了正确的回复content-type,但格式错误的JSON:"value"

获取有效JSON结果的方法是什么?

2 个答案:

答案 0 :(得分:3)

  
      
  • 没有特定的标头=> application / xml result
  •   
  • 分配给application / json =>的内容类型的标头application / xml result
  •   

您使用的是MVC 4 RTM吗?如果你使用MVC 4 RTM,默认格式应该是application / json ...我无法重新编写你的场景。

  
      
  • 接受分配给application / json的头文件给我一个正确的响应内容类型,但格式错误的JSON:“value”。
  •   

“value”实际上是字符串的有效JSON值。如果您正在寻找名称/值对的格式,这是一个示例。假设我有一个名为'人'的课程......

public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

...我有一个返回人物对象的动作,

    public Person Get()
    {
        return new Person() { Id = 1, FirstName = "John", LastName = "Doe" };
    }

然后对上述操作的调用将返回:

{"Id":1,"FirstName":"John","LastName":"Doe"}

希望这有帮助。

答案 1 :(得分:1)

您必须使用JsonResult作为返回类型:

public class ValuesController : ApiController
{ 
    // GET api/values/5
    public JsonResult Get(int id)
    {
        object returnObject;

        // do here what you need to get the good object inside returnObject

        return this.Json(returnObject, JsonRequestBehavior.AllowGet);
    }

    // other services...
}