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"
}
我需要创建新模型吗?或者其他简单的方法?如果我需要创建新模型,我将如何将现有模型对象的值分配给新模型?
您可以创建一个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();
}