asp.net mvc api json包装器
我有一个asp.net mvc api控制器方法,它的返回方法是列表。调用时,它返回以下json数据:asp.net mvc api json包装器,asp.net,asp.net-mvc,asp.net-mvc-4,asp.net-web-api,Asp.net,Asp.net Mvc,Asp.net Mvc 4,Asp.net Web Api,我有一个asp.net mvc api控制器方法,它的返回方法是列表。调用时,它返回以下json数据: [ { "AreaName": null, "AreaId": 0, "DestinationName": "Alanya", "DestinationId": 14, "CountryName": "Tyrkiet", "CountryId": 15 }, { "AreaName": null, "AreaId":
[
{
"AreaName": null,
"AreaId": 0,
"DestinationName": "Alanya",
"DestinationId": 14,
"CountryName": "Tyrkiet",
"CountryId": 15
},
{
"AreaName": null,
"AreaId": 0,
"DestinationName": "Antalya",
"DestinationId": 113,
"CountryName": "Tyrkiet",
"CountryId": 15
}
]
早些时候,当我在asp.net mvc中使用此方法时,它看起来类似于:
早期json数据:
{
"ContentEncoding":{
"IsSingleByte":true,
"BodyName":"iso-8859-1",
"EncodingName":"Western European (Windows)",
"HeaderName":"Windows-1252",
"WebName":"Windows- 1252",
"WindowsCodePage":1252,
"IsBrowserDisplay":true,
"IsBrowserSave":true,
"IsMailNewsDisplay":true,
"IsMailNewsSave":true,
"EncoderFallback":{
"MaxCharCount":1
},
"DecoderFallback":{
"MaxCharCount":1
},
"IsReadOnly":true,
"CodePage":1252
},
"ContentType":"application/json;",
"Data":
然后,上面的列表将添加到数据包装器中
我的问题是-在使用asp.net mvc web api时,如何恢复此“包装器”格式?您的JSON是对象列表的正常格式,第二种格式,较旧的表示对象。因此,当您需要时,只需返回对象。可能在旧版本(普通mvc)中,您确实返回了如下内容:
return JsonResult(new { Data = myList });
return new { Data = myList };
public class InvoiceResult
{
public int numberResultTotal;
public int numberResultPaged;
public List<InvoiceDTO> results;
}
<InvoiceResult>
<numberResultPaged>20</numberResultPaged>
<numberResultTotal>999999</numberResultTotal>
<results>
<InvoiceDTO>
<ID>110</ID>
<Active>2</Active>
<Date>01/01/2010</Date>
</InvoiceDTO>
<InvoiceDTO>...</InvoiceDTO>
<InvoiceDTO>...</InvoiceDTO>
<InvoiceDTO>...</InvoiceDTO>
</results>
</InvoiceResult>
现在,在WebApi中,您可以执行以下操作:
return myList;
这就解释了为什么旧的结果有那么多格式。要恢复WebApi中的旧包装,我想您只需执行以下操作:
return JsonResult(new { Data = myList });
return new { Data = myList };
public class InvoiceResult
{
public int numberResultTotal;
public int numberResultPaged;
public List<InvoiceDTO> results;
}
<InvoiceResult>
<numberResultPaged>20</numberResultPaged>
<numberResultTotal>999999</numberResultTotal>
<results>
<InvoiceDTO>
<ID>110</ID>
<Active>2</Active>
<Date>01/01/2010</Date>
</InvoiceDTO>
<InvoiceDTO>...</InvoiceDTO>
<InvoiceDTO>...</InvoiceDTO>
<InvoiceDTO>...</InvoiceDTO>
</results>
</InvoiceResult>
如果上述操作不起作用,请尝试以下操作:
HttpResponseMessage
returnrequest.CreateResponse(HttpStatusCode.OK,new{Data=myList})代码>
无论如何,在我看来,使用对象的新版本要容易得多,主要是因为它周围没有(嘈杂的)包装:)您可以创建自己的返回类型,如下所示:
return JsonResult(new { Data = myList });
return new { Data = myList };
public class InvoiceResult
{
public int numberResultTotal;
public int numberResultPaged;
public List<InvoiceDTO> results;
}
<InvoiceResult>
<numberResultPaged>20</numberResultPaged>
<numberResultTotal>999999</numberResultTotal>
<results>
<InvoiceDTO>
<ID>110</ID>
<Active>2</Active>
<Date>01/01/2010</Date>
</InvoiceDTO>
<InvoiceDTO>...</InvoiceDTO>
<InvoiceDTO>...</InvoiceDTO>
<InvoiceDTO>...</InvoiceDTO>
</results>
</InvoiceResult>
公共类InvoiceResult
{
公共国际号码查询总数;
公共国际号码查询页面;
公开名单结果;
}
ASP.NET Web API将其转换为JSON、XML或任何其他格式,您的客户端将得到如下结果:
return JsonResult(new { Data = myList });
return new { Data = myList };
public class InvoiceResult
{
public int numberResultTotal;
public int numberResultPaged;
public List<InvoiceDTO> results;
}
<InvoiceResult>
<numberResultPaged>20</numberResultPaged>
<numberResultTotal>999999</numberResultTotal>
<results>
<InvoiceDTO>
<ID>110</ID>
<Active>2</Active>
<Date>01/01/2010</Date>
</InvoiceDTO>
<InvoiceDTO>...</InvoiceDTO>
<InvoiceDTO>...</InvoiceDTO>
<InvoiceDTO>...</InvoiceDTO>
</results>
</InvoiceResult>
20
999999
110
2.
01/01/2010
...
...
...
只是好奇,当返回的对象已经是有效的json时,为什么需要它?