我编写了一个以JSON格式返回数据的API。
回复如下:
[{"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;
}
}
有没有办法在结果中添加外部名称/标签?
答案 0 :(得分:1)
如果您希望leads
成为对象的data
属性,那很简单:只需创建一个这样的对象,然后对其进行序列化。通过序列化,它总是最好操纵对象,而不是序列化文本。一个未转义的引号可能会造成严重破坏。你不想在这些细节上纠缠不清。
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 = $@"{{""data"":{x}}}";
答案 1 :(得分:0)
创建两个类 1类是2类对象的列表
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);