【发布时间】:2014-04-15 07:39:18
【问题描述】:
当我想到一个问题时,我正在处理 D3 组件。由于我正在使用不同的数组进行实验,我想知道为什么它们都包含相同的数据时需要对数据进行不同的处理。
第一种情况:我有一个“硬编码”数组,如下所示:
var tmp = [
{
"Weight": 0.0,
"Speed": 59.9,
"Depth": 362.24000,
"Time": "2014-04-09T10:01:23",
"Id": 0
}, {
"Weight": 10.0,
"Speed": 59.9,
"Depth": 394.07000,
"Time": "2014-04-09T10:01:56",
"Id": 1
}];
或者,在 Chrome 控制台中检查时:
每当我用这个数组输入我的组件时,组件都可以正常工作并且所有线/轴都被正确绘制。
第二种情况:我使用 d3.json 从我的控制器中获取一个数组,并在将其记录到控制台时返回以下内容:
[{"Weight":0.0,"Speed":59.9,"Depth":362.24000,"Time":"2014-04-09T10:01:23","Id":0},{"Weight":10.0,"Speed":59.9,"Depth":394.07000,"Time":"2014-04-09T10:01:56","Id":1}]
所以,每当我尝试执行 json.foreach() 时(json 是来自控制器的数组的名称):
json.forEach(function(d) {
var date = format(d.Time);
d.Time = date;
});
我在启动 foreach 函数时收到如下错误消息:
Uncaught TypeError: undefined is not a function.
为了让它工作,我必须对通过d3.json()从我的控制器返回的数据执行JSON.parse(json),然后我的数组如下所示:
我还应该提到我的 asp.net mvc 控制器返回这个:
string json = JsonConvert.SerializeObject(Model.Trend.ToArray());
return Json(json, JsonRequestBehavior.AllowGet);
我发现我从控制器返回的数组在检查时看起来像一串值,但我真的不明白为什么。
所以,我想我的问题真的可以归结为这个; 为什么我的数组“tmp”可以工作,但使用 d3.json 获取的数组需要在工作前进行解析?
【问题讨论】:
标签: javascript arrays asp.net-mvc json d3.js