3

視覚化の目的で d3 の force.js を使用しました。

以下は、完全な js のスニペットです。

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

test.json ファイルは現在、js ファイルと同じ場所にあります。それは正常に動作します。ファイルは、Web アプリケーションの「ページ」フォルダー内にあります。「test.json」の代わりに http URL「http://localhost:8084/FMS/faces/pages/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>

<pre>"test.json" の代わりにタグ内に json をロードするにはどうすればよいでしょうか。

問題のいずれかに対する解決策が非常に待ち望まれています。前もって感謝します。

4

2 に答える 2

2

JSPでデータを生成している場合は、単純にそれを行うことができます

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

JSON文字列ではなくJSオブジェクトを直接生成します

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

次に、d3 の json パーサーを使用する必要はありません。

force.nodes(theData.nodes)....
于 2012-09-19T06:50:17.033 に答える
0

一重引用符を使用してjson文字列を引用します

var myjson = '{"nodes":[{"name":"MYriel","group":1},{"name":"Labarre","group":2}],"links":[{"source":1,"target":0,"value":1}]}';

または二重引用符をエスケープします

var myjson = "{\"nodes\":[{\"name\":\"MYriel\",\"group\":1},{\"name\":\"Labarre\",\"group\":2}],\"links\":[{\"source\":1,\"target\":0,\"value\":1}]}";

jsp ファイルは json 文字列のみを出力する必要があります

{"nodes":[{"name":"MYriel","group":1},{"name":"Labarre","group":2}],"links":[{"source":1,"target":0,"value":1}]}
于 2012-09-19T06:48:39.530 に答える