Return 多个 JSON 作为 HttpResponseMessage
Return multiple JSON as HttpResponseMessage
我有一个HttpResponseMessage
方法returns一个JSON基于数据库数据:
public HttpResponseMessage RespMsg(JObject jsonData)
{
HttpResponseMessage response = new HttpResponseMessage();
dynamic json = jsonData;
int recId = jsonData.Id;
var respStructure = myTable.Where(r => r.Id==recId).Select(t => new
{
t.Id,
t.Name
}
var responseJson = JsonConvert.SerializeObject(respStructure);
response.Content = new StringContent(responseJson, null, "application/json");
return response;
}
我得到的响应类似于 {"Id":3,"Name":Third}
。
T1 中的行在 table T2
中有多行
var t2Resp = T2.Where(c => c.T1Id == recId);
foreach (var t in t2Resp) {
//call a method that return an object with computed data
}
有没有办法像 {"Id":3,"Name":"Third"} {first data from foreach} {second data from foreach}
一样将来自 foreach
的数据作为单独的 JSON
添加?第一个来自 T1
查询,下一个来自 t2Resp
长度
提示:- 首先,您必须创建一个与您的响应相匹配的 DTO 对象。由于 T1 和 T2 具有 one-to-many 关系,因此创建具有以下结构的 DTO class。
public class DtoData
{
public string id { get; set; }
public string Name { get; set; }
public List<DaatFromT2> T2Data { get; set; }
}
public class DaatFromT2
{
public string prop1 { get; set; }
public int prop2 { get; set; }
public DateOnly prop3 { get; set; }
}
然后你必须使用这个 class 从 T1 和 T2 填充数据,最后消毒到 JSON。如下所示。
var resposeStructure = new List<DtoData>();
var t1data = myTable.Where(r => r.Id==recId).Select(t => new
{
t.Id,
t.Name
};
var t2Resp = T2.Where(c => c.T2Id == recId);
foreach (var t in t1data)
{
var data = new DtoData
{
id = t.Id,
Name = t.Name,
T2Data = t2Resp.Where(c => t.id == t2Resp.someid)
.Select(t => new
{
//call a method that return an object with computed data
//and map to corresponding properties
});
}
resposeStructure.Append(data);
}
var responseJson = JsonConvert.SerializeObject(respStructure);
可能是这些代码片段给了您一些想法并能够解决这个问题。
编码愉快:)
我有一个HttpResponseMessage
方法returns一个JSON基于数据库数据:
public HttpResponseMessage RespMsg(JObject jsonData)
{
HttpResponseMessage response = new HttpResponseMessage();
dynamic json = jsonData;
int recId = jsonData.Id;
var respStructure = myTable.Where(r => r.Id==recId).Select(t => new
{
t.Id,
t.Name
}
var responseJson = JsonConvert.SerializeObject(respStructure);
response.Content = new StringContent(responseJson, null, "application/json");
return response;
}
我得到的响应类似于 {"Id":3,"Name":Third}
。
T1 中的行在 table T2
var t2Resp = T2.Where(c => c.T1Id == recId);
foreach (var t in t2Resp) {
//call a method that return an object with computed data
}
有没有办法像 {"Id":3,"Name":"Third"} {first data from foreach} {second data from foreach}
一样将来自 foreach
的数据作为单独的 JSON
添加?第一个来自 T1
查询,下一个来自 t2Resp
长度
提示:- 首先,您必须创建一个与您的响应相匹配的 DTO 对象。由于 T1 和 T2 具有 one-to-many 关系,因此创建具有以下结构的 DTO class。
public class DtoData
{
public string id { get; set; }
public string Name { get; set; }
public List<DaatFromT2> T2Data { get; set; }
}
public class DaatFromT2
{
public string prop1 { get; set; }
public int prop2 { get; set; }
public DateOnly prop3 { get; set; }
}
然后你必须使用这个 class 从 T1 和 T2 填充数据,最后消毒到 JSON。如下所示。
var resposeStructure = new List<DtoData>();
var t1data = myTable.Where(r => r.Id==recId).Select(t => new
{
t.Id,
t.Name
};
var t2Resp = T2.Where(c => c.T2Id == recId);
foreach (var t in t1data)
{
var data = new DtoData
{
id = t.Id,
Name = t.Name,
T2Data = t2Resp.Where(c => t.id == t2Resp.someid)
.Select(t => new
{
//call a method that return an object with computed data
//and map to corresponding properties
});
}
resposeStructure.Append(data);
}
var responseJson = JsonConvert.SerializeObject(respStructure);
可能是这些代码片段给了您一些想法并能够解决这个问题。 编码愉快:)