【发布时间】:2018-10-22 18:49:27
【问题描述】:
我正在尝试创建一个 JSON 提要以向 Google 图表返回一个包含四个系列的多折线图。我正在努力形成正确的 JSON 以返回图表。
我正在使用一个存储过程,它会生成一长串我需要在图表中显示的数据。我希望能够获取一长串数据并将其转换为四个单独的数据系列并以 JSON 格式发送回图表。
我的模特:
public class FoodCountCompare
{
[JsonProperty("Count")]
public int Count { get; set; }
[JsonProperty("Day")]
public string Day { get; set; }
[JsonProperty("Type")]
public string Type { get; set; }
}
我的 SPROC:
SELECT COUNT(P) AS 'Count', DATENAME(DW, fldTimeStamp) AS 'Day', @P AS 'Type' FROM [dbname].[FoodTypes] WHERE Protein = 1 AND fldUserId = ''+ @UserId+'' GROUP BY DATENAME(DW, fldTimeStamp)
UNION ALL
SELECT COUNT(H) AS 'Count', DATENAME(DW, fldTimeStamp) AS 'Day', @H AS 'Type' FROM [dbname].[FoodTypes]WHERE HEC = 1 AND fldUserId = ''+ @UserId+'' GROUP BY DATENAME(DW, fldTimeStamp)
UNION ALL
SELECT COUNT(L) AS 'Count', DATENAME(DW, fldTimeStamp) AS 'Day', @L AS 'Type' FROM [dbname].[FoodTypes]WHERE LEC = 1 AND fldUserId = ''+ @UserId+'' GROUP BY DATENAME(DW, fldTimeStamp)
UNION ALL
SELECT COUNT(O) AS 'Count', DATENAME(DW, fldTimeStamp) AS 'Day', @F AS 'Type' FROM [dbname].[FoodTypes]WHERE OmegaFA = 1 AND fldUserId = ''+ @UserId+'' GROUP BY DATENAME(DW, fldTimeStamp)
在我的 C# 代码中,我创建了四个单独的列表,我确信这是错误的。每个列表都包含正确的数据,因此这部分有效。我尝试过使用数组和序列化,但我一直不知道如何更进一步。
[Function(Name = "[dbname].[FoodCountCompare]")]
public List<FoodCountCompare> GetFoodCountCompare(){
string UserId = User.Identity.GetUserId();
var dc = new DataClasses1DataContext();
var x = dc.FoodCountCompare(UserId).ToList();
var Protein = (from a in x where a.Type == "P" select new { a.Count, a.Day, a.Type }).ToList();
var HEC = (from a in x where a.Type == "H" select new { a.Count, a.Day, a.Type }).ToList();
var LEC = (from a in x where a.Type == "L" select new { a.Count, a.Day, a.Type }).ToList();
var F = (from a in x where a.Type == "O" select new { a.Count, a.Day, a.Type }).ToList();
//Add code to create JSON here
JavaScriptSerializer js = new JavaScriptSerializer();
string p = js.Serialize(Protein);
string h = js.Serialize(HEC);
string l = js.Serialize(LEC);
string f = js.Serialize(F);
return something_like_json;
}
public JsonResult FoodCountCompare(){
var items = new List<FoodCountCompare>(GetFoodCountCompare());
return Json(items, JsonRequestBehavior.AllowGet);
}
对我来说,问题是,如何获取这些数据并将其转换为 JSON,例如嵌套数组或直接数据集。
【问题讨论】:
标签: c# json google-visualization