Web API Json响应格式

本文关键字:格式 响应 Json API Web | 更新日期: 2023-09-27 18:15:43

我已经在很多地方搜索了,但是我没有看到这种类型的场景

我的web api响应json是这样的(我已经为此创建了一个模型):

{
    "var1": 1,
    "test1": 2,
    "test2": 3
}

,但我希望我的输出响应如下:

{
    "type": "test",
    "query": "query used",
    "result": {
        "test1": 2,
        "test2": 3
    },
    "error": "if any error"
}

我需要创建新模型吗?或者其他简单的方法?如果我需要创建新模型,我将如何将现有模型对象的值分配给新模型?

Web API Json响应格式

您可以创建一个ResponseDTO模型,并在返回Json时使用它。

public class ResponseDTO<T>
{
    public string Type {get;set;}
    public string Query {get;set;}
    public T Result {get;set;}
    public string Error {get;set;}
}

在控制器上,不是返回Model,而是返回ResponseDTO,如下所示:

var response = new ResponseDTO<Model>();
response.Result = new Model(); //Do your things here

这样做使你的响应通用,所以你可以使用任何类型的模型

更新:

要创建一个新模型而不必复制所有属性,您可以使用如下的扩展方法:
public class Model()
{
    public int Var1 {get;set;}
    public string Test1 {get;set;}
    public string Test2 {get;set;}
}
public class NewModel(){
    public string Test1 {get;set;}
    public string Test2 {get;set;}
}

现在您创建了一个扩展方法,例如"ToNewModel",以将旧模型转换为您想要的新设计:

public NewModel ToNewModel(this Model model){
    var newModel = new NewModel()
    newModel.Test1 = model.Test1;
    newModel.Test2 = model.Test2;
}

和它们,无论你在哪里有你的Model对象,只要调用扩展方法:

public JsonResult test()
{
    var model = new Model()
    //{  Fill your model properties  }
    var response = new ResponseDTO<NewModel>(); //Declare the response of the type of your new design
    response.Result = model.ToNewModel();
}