我对来自 Web API 服务的 JSON 数据有疑问。
\n\n在常规 Web API 控制器中,我得到下面给出的结果。
\n\n\n\n[\n {\n "title": "ba\xc5\x9fl\xc4\xb1k",\n "description": "Tan\xc4\xb1mlama",\n "creationTime": "2018-01-15T17:20:06.9801797",\n "state": 0,\n "assignedPersonId": "afd46520-521d-4945-a4ee-083893e1d14c",\n "assignedPersonName": "derya",\n "id": 2\n },\n {\n "title": "title",\n "description": "description",\n "creationTime": "2018-01-15T17:17:26.5161288",\n "state": 0,\n "assignedPersonId": null,\n "assignedPersonName": null,\n "id": 1\n }\n]\nRun Code Online (Sandbox Code Playgroud)\n\n但是,当使用 ASP.NET Boilerplate 基础设施时,我得到的数据与以下内容相同:
\n\n{\n "result": {\n "items": [\n {\n "title": "ba\xc5\x9fl\xc4\xb1k",\n "description": "Tan\xc4\xb1mlama",\n "creationTime": "2018-01-15T17:20:06.9801797",\n "state": 0,\n "assignedPersonId": "afd46520-521d-4945-a4ee-083893e1d14c",\n "assignedPersonName": "derya",\n "id": 2\n },\n {\n "title": "title",\n "description": "description",\n "creationTime": "2018-01-15T17:17:26.5161288",\n "state": 0,\n "assignedPersonId": null,\n "assignedPersonName": null,\n "id": 1\n }\n ]\n },\n "targetUrl": null,\n "success": true,\n "error": null,\n "unAuthorizedRequest": false,\n "__abp": true\n}\nRun Code Online (Sandbox Code Playgroud)\n\n看起来实际的原始数据嵌套在外部数据结构中。因此,像下面这样的反序列化不起作用。
\n\nList<Class1> data = JsonConvert.DeserializeObject<List<Class1>>(JSONString); \nRun Code Online (Sandbox Code Playgroud)\n\n我必须管理 上的一些字符串操作JSONString。
难道我做错了什么?提前致谢。
\n来自WrapResult 和 DontWrapResult 属性的文档:
您可以使用控制器的一个操作或所有操作的WrapResult和DontWrapResult属性来控制换行。
ASP.NET MVC 控制器
如果返回类型为JsonResult(或异步操作的 Task<JsonResult>),则默认情况下, ASP.NET Boilerplate会包装ASP.NET MVC 操作结果。您可以使用WrapResult属性更改此设置,如下所示:
Run Code Online (Sandbox Code Playgroud)public class PeopleController : AbpController { [HttpPost] [WrapResult(WrapOnSuccess = false, WrapOnError = false)] public JsonResult SavePerson(SavePersonModel person) { // TODO: save new person to database and return new person's id return Json(new {PersonId = 42}); } }作为快捷方式,我们可以只使用[DontWrapResult],它与本示例相同。
您可以从启动配置更改此默认行为。
这不仅适用于 ASP.NET MVC 控制器,还适用于 ASP.NET Web API 控制器、动态 Web API 层和 ASP.NET Core 控制器。
| 归档时间: |
|
| 查看次数: |
989 次 |
| 最近记录: |