我指的是这个例子:http://bl.ocks.org/mbostock/1153292, 特别是对这些美丽的代码行:
var links = [
{source: "Microsoft", target: "Amazon", type: "licensing"},
...
{source: "Nokia", target: "Qualcomm", type: "suit"}
];
var nodes = {};
// Compute the distinct nodes from the links.
links.forEach(function(link) {
link.source = nodes[link.source] || (nodes[link.source] = {name: link.source});
link.target = nodes[link.target] || (nodes[link.target] = {name: link.target});
});
我想知道这里有什么数据格式'var links',以及我将如何解析以下java字符串(内容基本相同)
String someLinks = "[{source: \"Microsoft\", target: ... }, ...]"
上面的内容与上面的javascript 'var links'相同,然后我可以从中创建图表。
我试过
var links = JSON.parse( string );
但这不起作用... 'var links'似乎不是JSON? 编辑:或者我应该使用不同的java格式,例如某种阵列? (不一定是字符串)
答案 0 :(得分:1)
String someLinks
中的值无效JSON。它缺少属性名称的引号。 JSON比javascript本身更迂腐。
JSON.parse('[{"source":"A"},{"source":"B"}]')
可行(请注意"
周围的source
。
此外,你应该避免编写"协议"用手。如果您需要在javascript中构建JSON字符串,可以使用
JSON.stringify([{source:'A'},{source:'B'}])
请注意JSON,例如出于安全原因,也会逃离/
。像这样的疏忽很快就会以错误或更糟的方式结束。
答案 1 :(得分:0)
我相信这是字符串中的JSON。由于JSON只是JavaScript,因此您可以简单地“运行”代码来创建相应的数据结构。所以试试
var links = eval(someLinks)
即使我怀疑如果我们退后一步,事情可能会有所不同,你首先不需要eval
(因为它通常被认为是不好的风格)