我发现自己写过好几篇相关主题的文章:asp.net中如何返回JSON格式的数据、asp.net中如何返回JSON格式的数据。现在回过头来看看这些文章,五花八门。尽管如此,每次遇到要返回JSON,我仍然一脸茫然,需要翻出这些文章查阅一番。
来个总结吧。
一、asp.net web api
这是for api的,有别于mvc - using System.Web.Http;
- using System.Web.Http.Results;
- public class HyzController : ApiController
- {
- [HttpGet]
- [Route("api/base/hyz/zxz")]
- public JsonResult<List<Zxz>> GetZxz()
- {
- var data = new List<Zxz>()
- {
- new Zxz()
- {
- Id = 1,
- Name = "广州",
- Parent = "天河区",
- SubNum = 9,
- Subs = new List<Hyz>()
- {
- new Hyz()
- {
- Id = 2,
- Name = "天园街"
- },
- new Hyz()
- {
- Id = 3,
- Name = "棠下街"
- }
- }
- }
- };
- return Json(data);
- }
复制代码
二、asp.net web api中强制返回格式为JSON
asp.net web api 默认的结果传送方式是XML。但可以设置为JSON。方法为在WebApiConfig里加入一句: - public static class WebApiConfig
- {
- public static void Register(HttpConfiguration config)
- {
- // Web API 路由
- config.MapHttpAttributeRoutes();
-
- config.Routes.MapHttpRoute(
- name: "DefaultApi",
- routeTemplate: "api/{controller}/{action}/{id}",
- defaults: new { id = RouteParameter.Optional }
- );
- config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));//改为JSON方式
- }
- }
复制代码
三、asp.net MVC - public ContentResult GetUser()
- {
- return new ContentResult {
- ContentEncoding = Encoding.GetEncoding("utf-8")
- ,ContentType = "application/json"//<-----------------------------------
- ,Content = @"{
- ""code"" : ""0",
- ""desc"" : ""请求数据成功!",
- ""dataobj"" : [ {
- ""action"" : ""I",
- ""userCode"" : ""001",
- ""userName"" : ""张三""
- }, {
- ""action"" : ""U",
- ""userCode"" : ""002",
- ""userName"" : ""李四""
- } ]}"
- };
- }
复制代码
返回类型用JsonResult也可以,但无法应用预先拼好的json字符串
参考文章:ASP.NET MVC 提供与访问 Web Api
四、不管是WEB API还是MVC,直接返回JSON对象 - using Newtonsoft.Json;
-
- [System.Web.Http.HttpGet]
- public JObject GetTags(string account)
- {
- JObject jobj = new JObject();
-
- //ViewTag是自定义类
- IList<ViewTag> list = customViewService.GetTags(ProjectId,account);
- jobj.Add("total", (JToken)list.Count());
- jobj.Add("rows", JArray.FromObject(list));
-
- return jobj;
- }
复制代码
参考文章: 服务器端将复合json对象传回前端 来源:https://blog.csdn.net/leftfist/article/details/92664354 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |