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;
}截个图方便看:

然后就可以很方便的使用了
使用方法和微软自带的一样

效果如下:

 
        
