【发布时间】:2014-10-14 00:10:42
【问题描述】:
我有一个 Web API 控制器,从那里我从一个动作返回一个对象作为 JSON。
我是这样做的:
public ActionResult GetAllNotificationSettings()
{
var result = new List<ListItems>();
// Filling the list with data here...
// Then I return the list
return new JsonResult { Data = result };
}
但是通过这种方式,包括其Data 属性的 JsonResult 对象被序列化为 JSON。所以我最终由操作返回的 JSON 如下所示:
{
"ContentEncoding": null,
"ContentType": null,
"Data": {
"ListItems": [
{
"ListId": 2,
"Name": "John Doe"
},
{
"ListId": 3,
"Name": "Jane Doe"
},
]
},
"JsonRequestBehavior": 1,
"MaxJsonLength": null,
"RecursionLimit": null
}
我无法序列化这个 JSON 字符串,因为 JsonResult 对象向它添加了各种其他属性。我只对ListItems 感兴趣,没有别的。但它会自动添加如下内容:ContentType、MaxJsonLength 等...
现在这对我不起作用,因为 JSON 字符串中的所有其他属性...
var myList = JsonConvert.DeserializeObject<List<ListItems>>(jsonString);
有没有办法从操作中发送一个 JSON 对象,这样它就不会添加我不需要的所有属性?
【问题讨论】:
-
这看起来不像 web api 而是普通的 mvc。
-
@DanielA.White 嗯,它是 Web API。我的控制器也从它扩展而来。
-
你不应该使用
ActionResult/JsonResult。 -
啊,我明白了,那可以解释问题了:p
-
要在“常规控制器”中返回 json 数据,您的方法必须返回 new Json,请参阅:stackoverflow.com/a/227638/19046
标签: c# asp.net-mvc asp.net-mvc-4 asp.net-web-api json.net