2017-05-19 13 views
0

JSON 형식의 데이터를 반환하는 API를 작성했습니다.API의 JSON 응답에 외부 이름 추가

응답은 보이는 같은 :

[{"leadID":1,"eventID":2,"companyID":3},{"leadID":4,"eventID":5,"companyID":6}] 

아닌 이상, 내가이 컬렉션에 이름을 추가하고 싶습니다 않습니다 나에게.

{"data":[{"leadID":1,"eventID":2,"companyID":3},{"leadID":4,"eventID":5,"companyID":6}]} 

내 행동은 다음과 같습니다 : 결과에 외부 이름/레이블을 추가 할 수있는 방법이

public HttpResponseMessage GetLeadsSinceLastPoll() 
{ 
    using (var context = new MyDbContext()) 
    { 
     var leads = context.Lead.Where(q => q.dateAdded > AuthorizedUser.LastPollDate).ToList(); 
     var x = JsonConvert.SerializeObject(leads); 
     var res = Request.CreateResponse(HttpStatusCode.OK); 
     res.Content = new StringContent(x, System.Text.Encoding.UTF8, "application/json"); 
     return res; 
    } 
} 

있습니까

은 이상적으로는 같은 출력이되고 싶습니다?

답변

1

leads이 객체의 속성 인 data이되도록하려면 간단합니다. 객체를 만들어서 직렬화하면됩니다. 직렬화를 사용하면 직렬화 된 텍스트가 아닌 객체를 조작하는 것이 가장 좋습니다. 한 개의 이스케이프 처리되지 않은 인용 부호는 혼란을 야기 할 수 있습니다. 당신은 그 세부 사항에서 위로 꼬이고 싶지 않다.

var obj = new { data = leads }; 
var x = JsonConvert.SerializeObject(obj); 

또는 당신은 익명 형식을 지원하지 않습니다 C 번호 (4 < C 번호)의 이전 버전 사용하는 경우 :

var dict = new Dictionary<String, Object>(); 

dict["data"] = leads; 

x = JsonConvert.SerializeObject(dict); 

또는 당신이 그렇게 신속하고 더러운 뭔가를 원하는 경우 그것을 그 실제로 오래 걸립니다 :

var x = JsonConvert.SerializeObject(leads); 

x = [email protected]"{{""data"":{x}}}"; 
0

두 개의 클래스를 생성 클래스 1은 클래스의 목록이 객체

입니다
public class Objects 
{ 
    public List<Object1> data; 
} 

public class Object1 
{ 
    public int LeadID; 
    public int EventID; 
    public int CompanyID; 
} 

과 같이 목록에 항목을 추가

Objects ObjectList = new Objects() 
{ 
    data= new List<Object1>() 
}; 

Object1 object= new Object1() 
{ 
    LeadID = 1, 
    EventID = 2, 
    CompanyID = 3 
}; 

ObjectList.data.Add(object); 

변환 통해 Objectlist를 JSON으로 :

string jsonTxt = JsonConvert.SerializeObject(ObjectList); 
관련 문제