剑轩

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;
}

截个图方便看:

然后就可以很方便的使用了

使用方法和微软自带的一样

效果如下:





关于TNBLOG
TNBLOG,技术分享。技术交流:群号677373950
ICP备案 :渝ICP备18016597号-1
App store Android
精彩评论
{{item.replyName}}
{{item.content}}
{{item.time}}
{{subpj.replyName}}
@{{subpj.beReplyName}}{{subpj.content}}
{{subpj.time}}
猜你喜欢