2017-05-19 17 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プロパティにする場合は、簡単です。そのようなオブジェクトを作成してシリアル化してください。シリアライズでは、シリアライズされたテキストではなく、オブジェクトを操作することが常にベストです。 1つのエスケープされていない引用符が混乱を招く可能性があります。あなたはそれらの詳細で絡まって欲しくない。

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

それとも、C#の古いバージョンを使用して(< C#4)匿名型をサポートしていないことしている場合:

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、クラス2つのオブジェクト

のリストである2つのクラスを作成します。 JSONにObjectListに変換

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

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

ObjectList.data.Add(object); 

string jsonTxt = JsonConvert.SerializeObject(ObjectList); 
public class Objects 
{ 
    public List<Object1> data; 
} 

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

はそうのようなリストに項目を追加します。

関連する問題