如何获得 JSON 响应而不是 XML?
Posted
技术标签:
【中文标题】如何获得 JSON 响应而不是 XML?【英文标题】:How can I get a JSON response instead of XML? 【发布时间】:2012-09-22 03:38:30 【问题描述】:我只是新建一个 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 结果的方法是什么?
【问题讨论】:
【参考方案1】:没有特定的标头 => 应用程序/xml 结果 内容类型分配给 application/json 的标头 => application/xml 结果
您使用的是 MVC 4 RTM 吗?如果您使用的是 MVC 4 RTM,则默认格式应为 application/json...我无法重现您的场景。
接受分配给 application/json 的标头为我提供了正确的响应内容类型,但 JSON 格式错误:“值”。
"value" 实际上是字符串的有效 JSON 值。如果您正在寻找名称/值对的格式,这里有一个示例。假设我有一个名为“Person”的类...
public class Person
public string FirstName get; set;
public string LastName get; set;
...我有一个返回 person 对象的动作,
public Person Get()
return new Person() Id = 1, FirstName = "John", LastName = "Doe" ;
然后对上述操作的调用将返回:
"Id":1,"FirstName":"John","LastName":"Doe"
希望这会有所帮助。
【讨论】:
是的,MVC4 RTM。我确认它适用于对象。我的问题是一个简单的字符串。我的 Json 解析器无法将“值”识别为有效的 json 字符串。【参考方案2】:您必须使用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...
【讨论】:
问题是字符串没有自动序列化。所以,你的解决方案很好。以上是关于如何获得 JSON 响应而不是 XML?的主要内容,如果未能解决你的问题,请参考以下文章
RESTful 响应如何在 Yii2 中返回 JSON 而不是 XML?
RESTful 响应如何在 Yii2 中返回 JSON 而不是 XML?