net core webapi运用自定义json格式
电脑版发表于:2019/11/13 22:54
接上一篇
net core api json相关,全局配置,时间格式化,首字母小写等:http://www.tnblog.net/aojiancc2/article/details/2829
单独提一块出来写,不然篇幅太多,容易杂乱
想要使用自定义的json格式,其实在控制器中很方便的可以实现:
第二个参数就是这个,但是webapi没有json这个写法
JsonResult是要继承Controller才有的,webapi是继承的ControllerBase,但是我不想让webapi去继承controller会浪费一些效率,因为我们只对外提供数据,不需要和view什么打交道没有必要用到Controller里边多余的东西,所以我们可以使用自定义一个json返回即可
自定义json返回
public class MyJsonResult : ActionResult { JsonSerializerSettings jsonSerializerSettings; public object data; public MyJsonResult(object data, JsonSerializerSettings jsonSerializerSettings = null) { this.jsonSerializerSettings = jsonSerializerSettings; this.data = data; } public override void ExecuteResult(ActionContext context) { if (context == null) { throw new ArgumentNullException("context"); } HttpResponse response = context.HttpContext.Response; response.ContentType = "application/json;charset=utf-8"; string jsonstr = ""; if (jsonSerializerSettings != null) { jsonstr = JsonConvert.SerializeObject(data, Formatting.Indented, jsonSerializerSettings); } else { jsonstr = JsonConvert.SerializeObject(data, Formatting.Indented); } response.WriteAsync(jsonstr); } }
然后为了方便使用在APIBaseController(自己写的webapi的父类,方便添加一些共用的代码)中加入代码
[NonAction] public virtual MyJsonResult MyJson(object data, JsonSerializerSettings serializerSettings=null) { MyJsonResult myJsonResult = new MyJsonResult(data, serializerSettings); return myJsonResult; }
截个图方便看:
然后就可以很方便的使用了
使用方法和微软自带的一样
效果如下: