2016-10-31 2 views
0

나는 많은 곳에서 찾고 있었어요,하지만 난 이런 종류의 시나리오를 보지 못했다웹 API JSON Responce 서식

내 웹 API 응답 JSON (나는 이것에 대한 모델을 만든)과 같다 :

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

나는 새로운 모델을 만들 필요가 수행

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

는하지만 다음과 같은 내 출력 응답이 원하는? 또는 다른 쉬운 방법? 새 모델을 만들어야하는 경우 기존 모델 개체 값을 새 모델에 어떻게 할당합니까?

답변

0

ResponseDTO 모델을 만들어 Json을 반환 할 때 사용할 수 있습니다. 이 응답은 일반하게 같은

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

이 그 일을, 그래서 당신은 어떤 종류의와 함께 사용할 수 있습니다

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

및 컨트롤러에

, 대신 모델을 반환하는이 같은 ResponseDTO을 반환 모든 속성을 복사 할 필요없이 새로운 모델을 만들기위한

는 C :

UPDATE 모델 이 같은 사용 및 확장 방법 :

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(); 
} 
+0

응답을 주셔서 감사합니다. 한 가지 더 원하는 것은 현재 모델에서 모든 속성 값을 보내지 않으려한다는 것입니다. 일부 속성을 건너 뛰고 응답에 새로운 일부를 추가하고 싶습니다. 결과. 같은 질문에 "var1"을 건너 뜁니다 – Ram

+0

속성을 숨기려면 또는 null 값으로 보내려면 새 모델을 만들어야합니다. 대답이 당신을 위해 일하는 경우에, 대답으로 그것을 표를하는 것을 잊지 말라 – Stormhashe

+0

나는 새로운 모형에 속성 값을 일치하는 오래된 모형을 추가 할 것이다 (나의 새로운 모형은 몇몇 새로운 특성을 추가하고 어떤은 오래된 모형에 비교해 제거 될 것이다). i 이 모델이 너무 많아서 루핑을 할 수 없습니다. – Ram