Javascript 将JSON文本转换为JS对象
我有一个JSON字符串,它的格式是Javascript 将JSON文本转换为JS对象,javascript,json,d3.js,Javascript,Json,D3.js,我有一个JSON字符串,它的格式是 [{"A":"SomeStringData","B":1}, {"A":"SomeStringData","B":2}, ... ... ...] 请注意,这可以很好地通过所有json在线解析器,因此是一个有效的json文本。 我正在尝试传递数据以使用d3和nv.d3创建图表。我使用的代码片段如下所示: var-jsonString; nv.addGraphfunction{ var图表=nv.models.discreteBarChart.xSomethi
[{"A":"SomeStringData","B":1},
{"A":"SomeStringData","B":2},
...
...
...]
请注意,这可以很好地通过所有json在线解析器,因此是一个有效的json文本。
我正在尝试传递数据以使用d3和nv.d3创建图表。我使用的代码片段如下所示:
var-jsonString;
nv.addGraphfunction{
var图表=nv.models.discreteBarChart.xSomething.ySomething;
d3.选择'location'.datumjsonString.callchart;
收益表;
};
请注意,我将json文本原样传递给datum函数。这是行不通的
我尝试了json.parsejsonString,但它也不起作用
我试着评估一下,但也没用。
我编辑json字符串以添加一个根节点,如下所示:
[{值:[{A1:SomeStringData,A2:1},
{B1:SomeStringData,B2:2},
...
...
…]}]
以上内容通过所有联机解析器返回一个错误
但是,我可以使用eval+jsonString+now.JSON.parse来获取图表,但仍然不起作用
现在,我有见识的同事说eval很危险,应该在火刑柱上烧掉。所以,我猜我应该选择JSON.parse,它不起作用
有人知道我在JSON.parse上做错了什么吗?我是JSON新手,它让我发疯
如果有帮助,我会将json字符串作为字符串传递给MVC控制器:
Im使用以下从中获得的函数
返回的字符串只是作为字符串变量传递给控制器。没有什么特别之处。我在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字符串。离散条形字符期望标签和值具有相同的名称:
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
}
]}
];
或者保留您的姓名,然后更改代码,确保数据中的姓名保持一致。您是否尝试过JSON.Stringify实际上,是的,在编辑JSON文件之前和之后的两种情况下。没有帮助。然而,据我所知,stringify的目的是从JS对象创建JSON文本,而不是相反。我认为您的JSON字符串存在一些问题,它的格式应该是A1:SomeStringData,A2:SomeNumericData,我对此表示高度怀疑,因为我没有自己制作。JSON文本由JavaScriptSerializer类构建。此外,W3学校的JSON教程在处理数字数据时提到了相同的格式@HarshSharma他的JSON很好,JSON中的键需要引号。实际上,我将JSON文本作为字符串从MVC控制器传递。我很可能错了,但我猜Javascript将其视为字符串本身,因为我可以通过警报查看数据。你能发布一段代码,从MVC控制器获取jsonString吗?此外,我使用的是最新的Chrome浏览器:版本33.0.1750.146,如果有帮助的话。当然,已发布代码段。如何在客户端获取此字符串?可能是返回的数据类型未被识别为字符串,这可能会在使用JSON.Parses时产生问题。它们是统一的,因为我可以在使用eval函数时使用它们绘制图表。对于这种混淆,很抱歉,但它们是统一的。这只是一个示例json文本,我没有很好地使用它。非常抱歉。np,解释东西可能很难:-
historicalBarChart =
[{
key: "SomeKey",
values:[
{
"label":"SomeStringData",
"value":100
},
{
"label":"SomeStringData",
"value":200
}
]}
];