一尘不染

将json文件加载到d3.js

jsp

我已将d3的force.js用于可视化目的。

以下是完整js的代码段:

d3.json("test.json", function(json) {
  force.nodes(json.nodes)
      .links(json.links)
      .start();
});

test.json文件当前与js文件位于同一位置。工作正常。这些文件位于我的Web应用程序的“页面”文件夹中。如果我使用http网址“ http://
localhost:8084 / FMS / faces / pages / test.json”代替“
test.json”,则效果很好。但是,如果我使用“ /Users/subashbasnet/test.json”,即文件路径代替“
test.json”,则它不起作用。

如果我将json输出设置为var并代替“ test.json”使用,它将无法正常工作。例如:

 var myjson = "{"nodes":[{"name":"MYriel","group":1},{"name":"Labarre","group":2}],"links":[{"source":1,"target":0,"value":1}]}";
    d3.json(myjson, function(json) {
      force.nodes(json.nodes)
          .links(json.links)
          .start();
    });

我的.jsp文件具有以下输出:

<html>
<head></head>
<body>
<pre>{"nodes":[{"name":"MYriel","group":1},{"name":"Labarre","group":2}],"links":[{"source":1,"target":0,"value":1}]}</pre>
</body>
</html>

我应该如何将json中的json <pre>替换为“ test.json”。

亟待解决任何一个问题。提前致谢。


阅读 342

收藏
2020-06-10

共1个答案

一尘不染

如果要在JSP中生成数据,则可以简单地将其执行

<script>var theData = (<%= unquotedJsonData %>);</script>

直接生成JS对象而不是JSON字符串

<script>var theData = ({"nodes":[...]});</script>

然后,您无需使用d3的json解析器,只需执行

force.nodes(theData.nodes)....
2020-06-10