我有一个格式为
的JSON字符串[{"A":"SomeStringData","B":1},
{"A":"SomeStringData","B":2},
...
...
...]
我正在尝试使用d3和nv.d3传递数据来创建图表。我正在使用的片段如下:
var jsonString; nv.addGraph(函数(){ var chart = nv.models.discreteBarChart()。x(Something).y(Something); 。d3.select( '#位置')基准(jsonString).CALL(图表); 返回图表; });
请注意,我将json文本原样传递给datum()函数。这不起作用。
我编辑json字符串以添加如下的根节点:
[{值:[{ “A1”: “SomeStringData”, “A2”:1}, { “B1”: “SomeStringData”, “B2”:2}, ... ... ...]}]
以上内容通过所有在线解析器返回错误。
现在,我的知识渊博的同事说eval()是危险的,应该在火刑柱上烧掉。所以,我猜我应该选择无效的JSON.parse()。
有没有人知道我在使用JSON.parse()做错了什么?我是JSON的新手并且让我疯狂。
如果有帮助,我将json字符串作为字符串传递给MVC控制器:
我正在使用从here
获得的以下功能public static class JSONHelper
{
public static string ToJSON(this object obj)
{
JavaScriptSerializer serializer = new JavaScriptSerializer();
return serializer.Serialize(obj);
}
public static string ToJSON(this object obj, int recursionDepth)
{
JavaScriptSerializer serializer = new JavaScriptSerializer();
serializer.RecursionLimit = recursionDepth;
return serializer.Serialize(obj);
}
}
返回的字符串只是作为字符串变量传递给控制器。没有什么好看的。
答案 0 :(得分:1)
离散条形码char期望标签和值的名称相同:
nv.addGraph(function() {
var chart = nv.models.discreteBarChart()
.x(function(d) { return d.label })
.y(function(d) { return d.value })
...
;
因此,要么在数据中包含预期的名称,要么:
historicalBarChart =
[{
key: "SomeKey",
values:[
{
"label":"SomeStringData",
"value":100
},
{
"label":"SomeStringData",
"value":200
}
]}
];
或保留您的姓名,但随后更改代码,确保数据中的名称保持一致。
答案 1 :(得分:0)
我在Chrome控制台中尝试了以下内容。
var jsonString = '[{"A1": "SomeStringData","A2": 5},{"B1": "SomeStringData","B2": 14}]';
var jsonObject = JSON.parse(jsonString);
JSON.stringify(jsonObject);
然后按预期输出
"[{"A1":"SomeStringData","A2":5},{"B1":"SomeStringData","B2":14}]"
您使用的浏览器是什么?我只能假设这是一个浏览器错误,或者你没有在开头和结尾准备带有撇号的JSON字符串。